ASP.NET性能优化
2010-10-31 08:59:55 来源:WEB开发网核心提示:3. 尽量减少循环内的操作,循环内的每个操作,ASP.NET性能优化(15),都会被放大为循环次数的倍数,所以,减少JScript文件的下载次数6. 在HTML内书写JScript文件的URL时,注意统一大小写,大循环内微小的改进,在性能的整体提升上都是可观的
3. 尽量减少循环内的操作。
循环内的每个操作,都会被放大为循环次数的倍数。所以,大循环内微小的改进,在性能的整体提升上都是可观的。
4. 使用循环替代递归。
相比循环,递归的效率更差一些。递归的优点是在形式上更自然一些。所以,在不影响代码的维护性的前提下,用循环替代递归。
4.2.6 其它方面
1. 尽量使用语言内置的语法。
"var arr = […];"和"var arr = new Array(…);"是等效的,但是前者的效能优于后者。同样,"var foo = {};"的方式也比"var foo = new Object();"快;"var reg = /../;"要比"var reg=new RegExp()"快。
2. 尽量不要使用eval。
使用eval,相当于在运行时再次调用解释引擎,对传入的内容解释运行,需要消耗大量时间。
3. 使用prototype代替closure。
使用closure在性能和内存消耗上都是不利的。如果closure使用量过大,这就会成为一个问题。所以,尽量将:
this.methodFoo = function()
替换成:
MyClass.protoype.methodFoo = function()
和closure存在于对象实例之中不同,prototype存在于类中,被该类的所有的对象实例共享。
4. 避免使用with语句。
With语句临时扩展对象查找的范围,节省了文字的录入时间,但付出了更多的执行时间。因为每个给出的名称都要在全局范围查找。所以,可以将下面的代码:
with (document.formname)
{
field1.value = "one";
field2.value = "two";
}
变更为:
var form = document.formname;
form.field1.value = "one";
form.field2.value = "two";
4.3 DOM相关
4.3.1 创建DOM节点
相比较通过document.write来给页面生成内容,找一个容器元素(比如指定一个div或者span)并设置他们的innerHTML效率更高。
而设置innerHTML的方式比通过createElement方法创建节点的效率更高。事实上,设置元素的innerHTML是创建节点效率最高的一种方式。
如果必须使用createElement方法,而如果文档中存在现成的样板节点,应该是用cloneNode()方法。因为使用 createElement()方法之后,你需要设置多次元素的属性,使用cloneNode()则可以减少属性的设置次数。同样,如果需要创建很多元 素,应该先准备一个样板节点。
4.3.2 离线操作大型的DOM树
在添加一个复杂的DOM树时,可以先构造,构造结束后再将其添加到DOM数的适当节点。这能够节省界面刷新的时间。
同样,在准备编辑一个复杂的树时,可以先将树从DOM树上删除,等编辑结束后再添加回来。
4.3.3 对象查询
使用[""]查询要比.item()更快。调用.item()增加了一次查询和函数的调用。
4.3.4 定时器
如果针对的是不断运行的代码,不应该使用setTimeout,而应该用setInterval。setTimeout每次要重新设置一个定时器。
4.4 其他
1. 尽量减小文件尺寸。
将JScript文件中无关的空行、空格、注释去掉,有助于减小JS文件的尺寸,提高下载的时间。(可以通过工具来支持代码发布)
2. 尽量不要在同一个Page内同时引用JScript和VBScript引擎
3. 将Page内的JScript移入到单独的JS文件中。
4. 将Page内的JScript放置在Page的最下面,有助于提高页面的响应速度。
5. 利用cache,减少JScript文件的下载次数
6. 在HTML内书写JScript文件的URL时,注意统一大小写。这样可以利用前面URL缓存的文件。
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
- ››asp.net报“INSERT INTO 语句的语法错误解决
- ››Asp.net中表头合并 复杂表头实现
更多精彩
赞助商链接