Asp.Net与SEO Viewstate优化终极解决方案
这段时间,老大在看了网站后,发现viewstate所产生的一堆乱码,严重影响了我们网站http://www.xbcar.net 西部汽车网的打开速度和搜索引擎的抓取.就给我下了道铁令,三天内必须解决.这下该轮到我头大了,
例如:
input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dEV4cHJlc3Npb247UmVhZE9ubHk7PjtsPHB1Yl9uYW1lO3B1Yl9uYW1lO3B1Yl9uYW1 lO288Zj47Pj47Ozs7PjtAMDxw" />
我立马翻遍了所有的资料,及查遍了百度和Google。以求得到最佳解决方案。但都没有一个完整的解决方案。都写的比较零碎。但黄天不负有心人,最终还是让我找到了几种方案,并加以修改,改进。在此我要感谢这几个方案的提供者。谢谢他们的分享,在解决完我自己的问题后,有感于前几位的分享,故我也不敢独自分享,现在总结七种解决方案如下,以供大家分享,有不对的地方欢迎拍砖。现把ViewState的优化方法总结如下:
第一种解决方案(最快的一种,但是以牺牲asp.net方便性为代价的)西部汽车网
禁用viewstate。可在web.config里配置,或者页面@Page指令里加入 Enableviewstate="false" ,即可防止上面的乱码了。然后页面传值使用form或者cookies,别用session和application他们都是服务器杀手,但这种方式灵活度不高,而且微软自带的控件无法使用了,不如用JSP来做
第二种解决方案:
使用微软的MVC框架,很好用,不过个人感觉开发起来蛮麻烦的,不推荐也不抵触,觉得还不成熟这个东西
第三种解决方案:
使用ajax+web services来搞定,推荐这种方法,真正的页面代码和业务代码分离,很爽,虽然有些烦琐编码的时候,不过感觉很爽。
第四种解决方案:(改写viewSate位置,不对这种方法要每个cs代码都加入重写内容,有点烦。当然可以重写个父类可以解决。但每次都要重写,所以也会增加对服务器开销。好,不多说了,现代码贴上)
要加入using System.Text.RegularExpressions;
private static readonly Regex viewStateRegex =
new Regex("<input type=\"hidden\" name=\"__VIEWSTATE\".*/>", RegexOptions.IgnoreCase); //过滤viewstate html标记的正则表达式
private static readonly Regex endFormRegex =
new Regex(@"</form>", RegexOptions.Multiline | RegexOptions.Compiled); //过滤 </form&g
相关文档:
动态页面生成静态页面说起来其实不难,主要是思想的问题,像那些新闻不太常改动的,我们可以将他生成静态的,来提高网站的访问速度,以下就是我的方法,很简单
我们先将我们的动态网站放到网上,并且可以正常访问,然后就是用到了抓取页面的技术了
/// <summary>
/// 获得网页内容
& ......
ASP.NET页面之间传递值的几种方式?
一般来讲有以下几种:QueryString,session,cookies,application,server.Transfer
1. 使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数 ......
继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的
1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类
《至少》要实现哪些功能,继承它的类可以增加自己的方法.
2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两 ......
asp.net装载进度条及工作页面框架主要由4个部分组成,这4个部分的名称及在整个框架中所起到的作用如下:
1.入口链接地址页面(aspx):比如,登录页面.提供到目标地址的一个链接,并向该目标传递一些启动必须的基本链接参数.
2.入口链接目标页面(aspx):该目标对象是整个框架的核心,页面装载时通过document.write输出2个iframe,其 ......
看到很多朋友问这个问题,虽然很简单,但是很常用,拿出来讨论下吧。。。高手飘过!
记得几年前偶刚学.NET的时候偶是这样干的
+展开-C#
<%@ Control Language="c#" %>
//html...
<script runat="server">
public string BackClo ="red"; //这里定义了一个参数
public void Page_Load()
{ }
</sc ......