ASP.NET Webform提高页面性能常用方法和细节

ASP.NET Webform提高页面性能常用方法和细节

3292发表于2014-11-06

asp.net webform采用web控件,开发迅速效率高,但是对于是一个大型网站门户来说,如果不注意一些细节,满页面的堆满了web服务器控件,对于性能来说就是噩梦。下面分享一些我在使用webform开发的过程中提高页面载入速度一些手段。
本文是我对ASP.NET页面载入速度提高的一些做法,大部分都是针对前台页面而不是管理后台,因为前台访问量一般是很大,性能要求高。

1.页面GZIP压缩。

IIS服务器的Gzip压缩在生产环境中是很有用的,效果也会非常明显。Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。

例如:jquery-1.8.1.min.js文件大小是91KB,采用gzip压缩之后,大小大概是32KB,如下图:

可以看大小减少快1/3了。

2.OutputCache编程方式输出页面缓存。

webfrom页面和用户控件都有支持输出缓存,对经常访问而变化不是很频繁的的页面或控件开启输出缓存。开户方法:
在页面头加入下面代码:

<%@ OutputCache Duration="60" VaryByParam="none" %>

Duration为过期时间,单位为秒。

3.删除页面空白字符串。

4.删除ViewState。

webform页面为了保持状态Form里面会生成一个hidden名字为__VIEWSTATE,这个特性作为管理后台系统挺有用,但是对对于前台网站没有什么用,因为前台一般中是一个浏览查看的功能。
有一个最简单的方法是把页面的Form标签的runat="server"去掉就可以了。

5.使用计划任务按时生成静态页面。

静态页面比动态页面要快得多,静态页面存在服务器本地,不需要读数据库,不需要绑定数据。当请求一个html静态文件时IIS直接读取文件,返回给浏览器。对首页,导航页,常用、访问频率比较高的页面都生成静态页面,可以写一个程序每隔多少长时间自动生成html,到时页面的链接写成静态文件的地址。

6.JS,CSS压缩、合并、缓存,图片缓存(cdn)。

对于js,css小文件合并为一个文件,减少http请求;对比较大的文件对其进行压缩,加快页面的载入速度,网上很多这样的压缩工具;页面很小图片,比如icon之类的采用CSS Sprites,合并为一张图片。对于大量的图片,请求比较多可以考虑使用cdn,减少图片对服务器的带宽压力,如果大量的图片吃掉了大量的服务器带宽,服务器的响应时间会超慢。

8.对象Model缓存(redis,memcached)。

一个页面比如详情页面的展示一般都是读数据库,然后new 一个对象。这个对象可能比较复杂,可能从几个表中读了数据,最后通过这个对象绑定到页面上。为减少每次都重复从数据库中取,实例化对象。可以使用内存缓存,第一次实例化之后,将对象存到(redis或memcached中),第二次访问直接从内存缓存取出来,这样网站的性能会有大大的提高。当然为了保证缓存中的数据是最新的,在后台更改了相应的数据之后要记得更新缓存。

9、尽量避免服务器控件使用。

小编蓝狐