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

网站优化
让百度一星期内收录方案 博客收录总结
新站百度只收录首页后又删除的解释
预测日IP上万的最新关键词
SEO 经验总结
wordpress 博客永久链接完整rewrite规则
搜索引擎 判断原创文章的一些猜测
google 已经可以抓取flash加载的外部资源
Google 官方对链接nofollow的政策
百度7月22日大更新研究 百度算法彻底改变
7月26日 百度算法再次波动的处理方法
近期百度大违常理排名全面解析
百度排名的一些初步分析
近日百度连续K站拔毛的原因分析
如何看待近日的百度调整算法事件
SEO基础之建立网站地图
另类的新站推广方法
网站优化 学习笔记
微软 Bing(必应)seo优化的建议
SEO 网页中需要重点强调的内容
认识搜索引擎优化(SEO)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 85 ::
收藏到网摘: 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