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

网站优化
网站运营推广中的内容策略浅谈
网页设计 优化代码重要性
能够获得搜索引擎垂青的网页
使用网摘推广网站的七个技巧
SEO 域名创意篇
百度教你做 SEO 程序篇
网站不必天天更新 搜索引擎判断原创新算法
如何防止网站被降权八大要素
百度不更新快照的比完全解决方法
如何让网站吸引链接的三十招技巧
SEO HTML 标签权重列表小结
举一反三 推广网站三字经
成功 论坛运营的5条经验
浅谈影响网站流量几个原因分析
SEO 最经典的十句话
不靠SEO 做流量方法
SEO 关键字选择之为流量寻找关键字
文章长短会对网站排名产生影响
网站被降权后的补救方法
新站怎样快速被搜索引擎收录?

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


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