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

网站优化
谷歌官方《搜索引擎优化指南》分析工具篇
谷歌中文网站管理员教程 链接架构重要性
更新网站内容频率对SEO的影响
针对于谷歌搜索引擎优化的十二个基本步骤
《网络营销教程—SEO》 第二章搜索引擎
《网络营销教程—SEO》 第三章搜索引擎营销
基础教程 搜索引擎优化基础之空间和域名
基础教程 搜索引擎优化基础之爬虫程序篇
国内四大主流搜索引擎 百度谷歌雅虎搜狗
搜索引擎优化基础教程 进行关键词的优化
搜索引擎优化基础教程 如何针对百度优化
十四个因素 将导致网站不被搜索引擎收录
搜狗搜索引擎优化方法
九大搜索引擎优化作弊总结 检查下你网站
影响网站优化的五项关键策略
搜索引擎优化基础教程 单面页的最佳优化
网站优化过程中的关键点 关键词的选择
搜索引擎优化排名做好的十个基本要点
谈外连对整个网站的seo影响有多大
搜索引擎优化SEO操作指南

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


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

最近有些忙,终于把Asp.net的 Viewstate优化(二) 这里出来。前面的Asp.Net程序员与SEO - Viewstate优化( 一 )可能看起来不是很明白,那么我这篇翻译后给大家留个原代码,可以下载下来看看。下面内容接上节开始:

我们的网页适配器在这个form的底部添加一个隐藏字段__SEOVIEWSTATE来放实际视图状态数据,唯一的局限性是你不能直接在asp.net form 内的表达式来表现它。然而,这种限制可以很容易地避免把表达的预留位置控制或内部另一个控制。深入解释这一限制看看这篇文章

让我们通过一个例子来看适配器起的作用. 下面的ASP.NET page:

以下为引用的内容:
<%@ Page Language="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="SEOViewStateAdapterTest._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
   
<title></title>
</head>
<body>
   
<formid="form1"runat="server">
   
<div>
        Enter a message:
<br/>
       
<asp:TextBoxID="txtMessage"runat="server"></asp:TextBox><br/>
       
<asp:ButtonID="bSaveMessage"runat="server"Text="Save Message"onclick="bSaveMessage_Click"/><br/>
       
<asp:LabelID="lMessage"runat="server"></asp:Label><br/>
       
       
<p>Page generated at <asp:PlaceHolderID="PlaceHolder1"runat="server"><%= DateTime.Now.ToString("hh:mm dd/MM/yyy") %></asp:PlaceHolder></p>
   
</div>
   
</form>
</body>
</html>

关联的CS代码:

以下为引用的内容:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;

namespace SEOViewStateAdapterTest
{
   
publicpartialclass _Default :System.Web.UI.Page
   
{
       
protectedvoid Page_Load(object sender, EventArgs e)
       
{
           
if(!Page.IsPostBack){
                ViewState
["previousMessage"]= txtMessage.Text;
           
}
       
}

       
protectedvoid bSaveMessage_Click(object sender, EventArgs e)
       
{
            lMessage.
Text=String.Format("The current message is '{0}'. The previous message was '{1}'", txtMessage.Text, (string)ViewState["previousMessage"]);
            ViewState
["previousMessage"]= txtMessage.Text;
       
}
   
}
}
 

没有使用我们的适配器情况下,在几次 postbacks 后,我们看到网页的HTML代码是这样的

以下为引用的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
   
<formname="form1"method="post"action="Default.aspx"id="form1">
<div>
<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value="/wEPDwUJc01l[...]VwP+cfdSWI6Q=="/>
</div>

<div>

   
<inputtype="hidden"name="__EVENTVALIDATION"id="__EVENTVALIDATION"value="/wEWAwKb4uenCgK/1s7/DwKf8MMPfiUvZtKPSXk//XdxkLooz8QDI0Y="/>
</div>
   
<div>
        Enter a message:
<br/>
       
<inputname="txtMessage"type="text"value="Message 2"id="txtMessage"/><br/>
       
<inputtype="submit"name="bSaveMessage"value="Save Message"id="bSaveMessage"/><br/>
       
<spanid="lMessage">The current message is 'Message 2'. The previous message was 'Message 1'</span><br/>
       
       
<p>Page generated at 08:13 04/12/2008</p>
   
</div>
   
</form>
</body>
</html>

使用我们的适配器情况,在几次 postbacks 后,我们看到网页的HTML代码是这样的。看,视图数据代码被移到底部啦。

以下为引用的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
   
<formname="form1"method="post"action="Default.aspx"id="form1">
<div>
<inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"value=""/>
</div>

<div>

   
<inputtype="hidden"name="__EVENTVALIDATION"id="__EVENTVALIDATION"value="/wEWAwL+raDpAgK/1s7/DwKf8MMPyF7nqN1AbwNwFBq8OAjEAQorsyo="/>
</div>
   
<div>
        Enter a message:
<br/>
       
<inputname="txtMessage"type="text"value="Message 2"id="txtMessage"/><br/>
       
<inputtype="submit"name="bSaveMessage"value="Save Message"id="bSaveMessage"/><br/>
       
<spanid="lMessage">The current message is 'Message 2'. The previous message was 'Message 1'</span><br/>
       
       
<p>Page generated at 08:11 04/12/2008</p>
   
</div>
   
<inputtype="hidden"name="__SEOVIEWSTATE"id="__SEOVIEWSTATE"value="/wEPc01lc3[...]CdNY6AtgigHvU="/></form>
</body>
</html>

为了使用的适配器,您必须添加一个引用,并添加一个名为SEOViewStateAdapter.browser (文件的名称并不重要。扩展名需要是相同的。或者也可以合并的内容另一个文件如果您已经有一个)到App_Browsers文件夹中。该文件应为:

以下为引用的内容:
<browsers>
   
<!-- use the adapters for all browsers -->
   
<browserrefID="Default">
       
<controlAdapters>
           
<!-- ths adapter is used to save the view and control state at the bottom of the form so the page is more friendly to search engines -->
           
<adaptercontrolType="System.Web.UI.Page"adapterType="Manu.Web.Adapters.SEOFriendlyViewStatePageAdapter, SEOViewStateAdapter"/>
       
</controlAdapters>
   
</browser>
</browsers>

当你还不是很明白讲的是文章内容的时候,你可以下载下面的代码来看。

SEOViewState.zip

相关阅读:

Asp.Net程序员与SEO - Viewstate优化