您的位置:首页 > 编程语言 > ASP

Asp.net终极优化指南

2013-11-07 14:35 267 查看
尽管现在的网速都飞速发展,以前打开一个满屏广告的网站可能需要几分钟。但现在就算代码再垃圾,广告漫天飞的网页,也可以在十几秒之内打开完成。但是为什么Google的首页到现在还是保持这么简洁?速度!还是为了速度!页面上太多的代码,后台多余的处理程序都会大大延长网页的载入速度,增加服务器的投资负担,还有以后的开发难度......总之,保持一个网站的代码优越性,访问的速度,都是一个成功网站的支柱。

本人总结了好几个方面的优化,希望对大家有点帮助。

1.用Repeater和ListView来代替其他展示数据的控件。

也许是中国的教材影响,大多数人都喜欢按照课本上的例子来使用Gridview,Datalist,Formview等控件来展示数据。也许,这些控件提供了简便的方式来展示,修改数据,但背后却是增加了很多垃圾的代码,不但影响速度,而且因为这些控件生成的代码是不能控制的,(例如Gridview自动生成的是table的代码,Formview生成后直接是一个table来包括起来,无论你在里面的自定义代码是什么),这直接导致了布局的困难.....

而Repeater则没有这个问题,基本上是你控制它生成的代码。譬如要在<ul></ul>列表里面不断展示<li>的数据,只需要

<ul>

<asp:Repeater xxx>

<ItemTemplate>

<li><a href="<%# "Name.aspx?ID="+eval_r("ID") %>"><%# eval_r("Name") %></a></li>

</ItemTemplate>

</asp:Repeater>

</ul>

这样就可以了...而同样Listview也可以做到这一点,不过功能就强大很多了。Listview不但有专门的分页控件,而且还提供了获取某一项的数据,用来修改删除增加等...通常后台通过控件的CommandName,和CommandArgument的属性,配合Container.DisplayIndex来获得数据,获得以后要干什么就随你了....

2.删除不必要的DataKeyNames

尽管要后台获得数据的话,需要DataKeyNames来配合,但是每增加一个DataKeyNames的项,都会大大增大ViewState的代码量(后面有议论)...所以,如果后台你不需要用到某一个数据项的话,就尽量少写上去...

3.把多次使用的重复代码写入一个类里面调用

如果你的代码中有不断重复使用的代码,那就写成一个公共的方法,这对缩小代码很有帮助。

4.放弃Asp.net的Ajax功能

Ajax的确是一个好东西,它提供了创新的强大的无比优越功能,让我们在网页的效果,和效率上更上一层楼。但是使用Asp.net自带的所谓Ajax,实在是一个灾难!它会把一大堆你没有用到的代码写进你的网页里面,特别是那些websource.axd文件,加起来有300-500KB,甚至更多。所以想使用UpdatePanel,或许Ajaxcontroltoolkit那些东西的话,还是放弃的好.....老老实实地学一下Ajax,自己编写js出来。iGtan.com这里用了不少Ajax的地方,但是相关的Ajax代码也不过2-3Kb左右....调用起来非常方便。

5.放弃Asp.net的验证功能

和Ajax的情况相同,Asp.net虽然提供了方便的验证功能,但是也载入不少websource.axd的文件....如果学习一下js里面的正则表达式,验证只需要几行代码就可以实现了。

6.非必要的时候,今年少用Asp的控件

虽然Asp的控件提供不少方便的功能,但实际上,他生成的还是Html的代码,只需要在Html代码后加上runat=server,就可以实现对该字段的控制了,譬如asp:Label,可以用<label id="xx" runat=server></label>,asp:LinkButton,可以用<a runat=server></a>来代替,基本上都可以实现asp控件所能实现的功能...

7.后台减少代码的输出

譬如你要后台输出:abc.InnerHtml="用户名:"+username.xx(读取出来的数据)

可以改成前台<h2>用户名:<span id="abc" runat="server"></span></h2>,后台abc.InnerHtml=username.xx

这样可以减少服务器的负担

8.一次引用

通常一个方法里面要用到某些相同的数据,譬如Request.QueryString["ID"],但是每写一个这个代码,程序就要执行多一次获取ID的方法。所以最好在程序之前先string ID=Request.QueryString["ID"];然后接下来只需要引用”ID“就可以了。

9.缩进代码

虽然编写代码的时候,一层一层的代码很好看,很容易管理,但是生成网页后还是把这些多余的空格都加上去了。所以把你的代码全部缩到靠左边:

<xxx>xxxx</xxx>

<xx>xx</xx>

<xxxx>xxx</xxxx>

能节省不少代码。

10.消灭ViewState!

ViewState是asp的一大特色,他可以保存控件的状态,以便在页面回传的时候,不会把你刚填写好的数据清空。但是它会在页面增加一大堆一大堆的无关的代码,虽然完全消灭Viewstate有点困难,但以下几个方法可以缩小viewstate的代码量

--1.不需要保存输入状态的页面设置:EnableViewState="false"

--2.不需要保存控件的数据的控件里面设置:EnableViewState="false"

--3.尽量用Repeater来展示数据,如果真的需要才用Listview

--4.减少用asp的控件

--5.静态固定的内容,用静态网页来展示

11.用一个CSS和JS文件

如果网站的框架都差不多,而且用户都是集中在某几个页面,可以都共用一个CSS和JS文件,来减少读取文件的请求。

12.减少图片的读取

同样,多个请求会加重服务器的负担,所以减少(特别是用于网站界面上的)图片的读取请求,会大大加快网站的速度。如果某些图片都相类似的,可以都把他们放在一个图片里面,然后用CSS的background-position属性控制展示的区域

13.自己写JS

虽然现在有jQuery等不错的js库,可以提供强大的功能,但是里面仍然有不少你没有用到的代码要读取...所以最好的方法还是自己亲手写js文件。

14.编写便捷的JS功能

可以把某些很有用的功能都缩到一个方法里面,这对减少代码很有帮助,特别是

function $(ID)

{

return document.getElementByIdx_x(ID);

}

非常有用和方便,是应该写js的人必写的方法。

15.压缩你的JS和CSS文件

网上有不少这样的工具,可以大大加快读取速度

16.非必要的代码,非必要工作,尽量利用JS来完成

如果要在页面生成某个按钮,某个连接,某些html代码的话,计算某些东西,作一些简单的处理,尽量用js来完成~这可以减小服务器的工作量。

17.Ajax

Ajax功能强大,配合js,可以精准控制在某地方展示更新数据,而不需要服务器再回传到服务器,然后再次生成页面,再发送...对服务器来说,Ajax可以减少很多不必要工作。

还有不少需要优化的地方,我这里只是介绍了部分,不过相信按照上面所提供的方法,已经可以让你的asp网站加快一个层次了~

某些更高级的优化以后再写吧~

可以去www.iGtan.com参考一下,基本上都做了以上的优化..

本文原贴来自:http://www.igtan.com/thread.aspx?ForumTopicID=216&ForumID=21
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: