惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
A
About on SuperTechFans
量子位
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
T
Threat Research - Cisco Blogs
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tenable Blog
V
V2EX
月光博客
月光博客
L
Lohrmann on Cybersecurity
W
WeLiveSecurity
Webroot Blog
Webroot Blog
H
Hacker News: Front Page
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
AI
AI
腾讯CDC
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V2EX - 技术
V2EX - 技术
Martin Fowler
Martin Fowler
博客园 - Franky
I
Intezer
Project Zero
Project Zero
I
InfoQ
P
Privacy International News Feed
C
Check Point Blog
T
The Blog of Author Tim Ferriss
P
Palo Alto Networks Blog
L
LINUX DO - 最新话题
有赞技术团队
有赞技术团队
Cloudbric
Cloudbric
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
SegmentFault 最新的问题
Latest news
Latest news
小众软件
小众软件

博客园 - sojay

凡客诚品的跨域获取cookies方法 jquery 飞入购物车效果 SQL2005 中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突 asp.net下载文件的常用方法大全 - sojay - 博客园 IE8下ewebeditor编辑器不能使用的解决办法 - sojay - 博客园 在使用UpdatePanel时JS对话框出错的解决办法。 获取Repeater中Footer/HeaderTemplate 中的控件 repeater嵌套 - sojay - 博客园 用css进行导航定位 导航栏标签定位 - sojay - 博客园 (转)才几百K的eWebEditor v4.6 For asp.net编辑器 各种 Lightbox 效果的实现 XP中IIS“http500”错误的终极解决方法 (原)ASP.NET中的单引号和双引号 - sojay - 博客园 Application, Session, Cookie, Viewstate, Cache对象用法和区别(转) 转载 .NET牛人应该知道些什么?备忘 学习 应用 我的毕业设计 修改MD5加密 提高网站安全 对google个性主页的拖拽效果的js的完整注释
Asp.net SEO优化,针对<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=""> - sojay
sojay · 2009-04-23 · via 博客园 - sojay

.net 网站生成 页面后,会有 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUIMjU3MTg5ODcPZBYCAgEPZBYeAgEPZBYCZg8QZGQWAWZkAgMPZBY">

这个是Asp.net应用ViewState技术的特征表现,专用来保存页面状态的,为了页面能在PostBack后依然能读取服务器控件原有的状态数据,Asp.net中使用了ViewState技术,而ViewState技术本质上是用一个默认名称为"__VIEWSTATE的Hidden类型表单域来保存和传递数据,然后当在大量使用viewstate时产生的value是相当夸张的(对于SEO来说)。因为我们知道很多搜索引擎的搜索结果中会看到网页大小,在内容和功能确定的前提下,网页字节数越小,打开速度越快,对搜索蜘蛛的爬行越有利。而当我们的ASP.NET页面中的<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="">value值大于200KB或更大时,对搜索是不利的。
www.ynyes.com天度网络 联系sojay.cnblogs.com
虽然我们可以通过三种级别来轻松禁用掉这些数据的往返传递:
Machine级 在machine.config中设置<pages enableViewStateMac='false' />
Application级 在Web Applicatin的web.config中设置<pages enableViewStateMac='false' />
单页面级 在该页面中设置<%@Page enableViewStateMac='false' %>或通过代码设置Page.EnableViewStateMac = false;
可是,如果我们完全能通过禁用ViewState来解决数据传输负担而且不产生副作用的话,那么可能会导致你页面上的一些功能无效。有没有什么好的办法来解决呢。
www.ynyes.com天度网络 联系sojay.cnblogs.com
在网络上找到了一些。转帖过来。

第一种,直接不再页面上输出input type=hidden name="__VIEWSTATE"。这种方法在页面没有使用viewstate的时候可以使用。

Code

编译后生成的dll文件名为Blackant.Controls.dll
然后在web项目中引用这个dll
修改web.config,加入以下内容于System.Web配置节


其实核心内容很简单
HiddenInputHttpModule中如下指示使用页面过滤器
 HiddenInputFilter filter = new HiddenInputFilter(response.Filter);
response.Filter = filter;
 HiddenInputFilter 中则
string finalHtml = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count);
            //找到<input type="hidden" name="__VIEWSTATE"
            string pattern=@"\<input type=""hidden"" name=""__VIEWSTATE""[^\>]*\>";
            finalHtml=Regex.Replace(finalHtml, pattern, string.Empty, RegexOptions.IgnoreCase | RegexOptions.Multiline);
替换掉<input type="hidden" name="__VIEWSTATE" ..../>标签

www.ynyes.com天度网络 联系sojay.cnblogs.com

Code

www.ynyes.com天度网络 联系sojay.cnblogs.com

第三种:将ViewState的位置调整到页面底部

www.ynyes.com天度网络 联系sojay.cnblogs.com

Code

www.ynyes.com天度网络 联系sojay.cnblogs.com

不知道还有没有好的方法,解决多SEO友好的优化方式。