当前位置: 首页 > 图文教程 > 网站运营 > 网站优化 > Asp.Net程序员与SEO - Viewstate优化

网站优化
谈谈百度的优化与降权
百度对收录新站的算法调整
什么样的域名算是好域名
SEO优化中丑陋的短视行为
SEO做的很好,但是网站却上不了档次?
META标签keywords和description进行SEO
让新网站被搜索引擎快速收录的实用方法
科学的策略将你的站点添加到这四大引擎
正视SEO的发展与出路
确定网站的关键词的几个重要因素
网站SEO:关键字选择技巧与策略杂谈
一个人做一个网站第一个月可以将流量做到多少?
网站地址中的WWW是否可以去掉的探讨
SEO秘诀 掌握Google的语言
网站SEO要坚持不懈
网站进行优化的前提是网站内容
关于网站的重复内容,10个建议
汇总直接影响网站排名的主要因素
入门:网站SEO菜鸟级别教程
网站SEO中关于巧妙地处理内容复制的技巧

网站优化 中的 Asp.Net程序员与SEO - Viewstate优化


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 68 ::
收藏到网摘: n/a

什么是Viewstate

例如:
input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="DwxNTgzOTU2ODA7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8QDA8cDxwPGw8UGFnZUNvdW50O18hSXRlbUNvdW50O18hRGF0YVNvdXJjZUl0ZW1Db3VudDtEYXRhS2V5czs+O2w8aTwxPjtpPDg+O2k8OD47bDw+Oz4+Oz47Ozs7Ozs7OztAMDxAMDxwPGw8SGVhZGVyVGV4dDtEYXRhRmllbGQ7U29ydEV4cHJlc3Npb247UmVhZE9ubHk7PjtsPHB1Yl9pZDtwdWJfaWQ7cHViX2lkO288Zj47Pj47Ozs7PjtAMDxwPGw8SGVhZGVyVGV4dDtEYXRhRmllbGQ7U29ydEV4cHJlc3Npb247UmVhZE9ubHk7PjtsPHB1Yl9uYW1lO3B1Yl9uYW1lO3B1Yl9uYW1 lO288Zj47Pj47Ozs7PjtAMDxw" />

当我看到这一大片内容的时候就觉得这是一个asp.net SEO过程中的难题,一直没有找到方法,这些天查了下英文站找到了这个方法。下面是我看了Search Engine Optimization - Moving View State to the bottom of the pagehttp://www.manuelabadia.com/blog/PermaLink,guid,7924eaf8-b406-43af-9444-b816f6dfa246.aspx)这篇文章后,觉得该方法可行,就翻译了一下,我英文水平有限,只把我看懂的大概意思和自己的理解写下来,希望对大家有帮助。

当我们去对一个ASP.Net页面做SEO的时候,会发现一个很大的问题那就是隐藏的视图状态。很多搜索引擎都明确页面抓取的界限,那就是只会抓取到网页前几千个字节的文本内容,所以当你页面的前2KBViewState垃圾的时候,你的页面很可能会遭到处罚。那么我这篇文章的目的就是把视图状态数据移动到尽可能少。

我已经发现一些途径来解决这个问题,在响应输出的时候重写最终的HTML编码。当这个方法执行后我发先它占有很大的CPU使用。所以,我需要一种方式既能实现功能又不浪费的CPU的方法。我发现反射的方式做到这一点。我的方法使用的ASP.NET控制适配器架构。

控制适配器是一个可以用来控制所产生的HTML控制它适应的类。由于页面类,是一种负责任的渲染视图状态隐藏字段( Page.BeginFormRender调用Page.RenderViewStateFields ,适配器的网页是必要的。然而,视图状态隐藏字段在ASP.NET基础架构中起着关键作用和难以修改相关的HTML

一个PageAdapter有一个方法叫做GetStatePersister()返回的对象继承于PageStatePersister 。当加载和保存视图状态的时候调用PageStatePersister。这里有2个类是从PageStatePersister HiddenFieldPageStatePersisterSessionPageStatePersister继承来的。第一种是默认情况下,存储视图状态中的隐藏字段名为__VIEWSTATE 。第二个存储视图状态在session中。因此,我们可以很容易地创建一个自定义PageStatePersister来控制视图状态加载和保存过程。最大的问题是如何在form标记关闭之前建立隐藏的视图状态,同时以完全透明的解决办法。经过一些尝试我想出了一个解决方案,我很高兴的。

我意识到,这是不可能完全从页面顶部删除视图状态隐藏字段,因为他在ASP.NET的架构这方面发挥着关键作用。但是,同任何自定义页面状态持续的ASP.NET基础架构提供至少一个空视图状态的隐藏字段只有70字节:

<input type="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value=""/>

相关阅读:

Asp.Net程序员与SEO - .Net的URL静态化

Asp.Net程序员与SEO - .Net基于SEO友好数据分页

Asp.Net程序员与SEO - 关注Sitemap