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

网站优化
社交媒体的发展 将使得SEO变得更加复杂
提供权重 针对搜索引挚优化网站内容写作
看上去很美 全面了解谷歌网页级别判断值
网站的访问量 如何来通过google有效提升
网站被百度K掉后 换米重新收录的技巧方法
内部链接优化的技巧
大型网站进行搜索引擎优化的一些基本思路
专家称并不是人人都有执行搜索优化的能力
做网站推广优化 对于网站反向链接的分析
构建注重SEO搜索优化的div+css命名规则
搜索引擎排名高低关乎SEO技巧吗
关于SEO的心态和目的
康轶文:各类SEO问题绝妙处理方法大揭秘
如何定位网络营销市场引发SEO未来的思考
内容为王赢得链接女王 网站链接优化方法
整站优化与热词优化两种SEO方法的对比
网站百度排名下降及不稳定的分析与建议
搜索引擎细分下的站内搜索市场有多大
垃圾站和正规站 SEO新手你该要如何选择
三招教你和蜘蛛搞好关系

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


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