你的位置:首页 > ASP.net教程

[ASP.net教程]网站性能优化之开启服务器端http压缩


公司的一个项目由于管理和开发方面的一些问题,导致开发完成之后,一个js文件变的很大,minimize之后还有700kb, 影响了网站的性能,特别是在网速慢的时候,加载一个页面居然要2分钟。招来了一大堆的客户投诉。。。

解决这个问题最理想的办法是分解这个超大js文件,只加载所需的javascript。但是由于最初的开发人员都已经不再了,这个分解任务风险系数太高,不能轻易尝试(客户要求很高,一旦出错很难和客户解释)。为了提高在低网速下的网站反应时间,我想到了用服务器端压缩http响应内容的办法,以此来减少网络数据传输。

IIS 7.0改进了服务器端压缩的方法,使其更加容易配置和使用。

这里是微软官方网站的一个详细介绍和配置https://www.iis.net/configreference/system.webserver/httpcompression

IIS 7.0以及更高版本提供了2种压缩方法:

1. 静态压缩:压缩服务器端的静态内容,如*.js,*.css等。它会降压缩后的内容缓存到如下路径:%windir%\inetpub\temp\IIS Temporary Compressed Files\ApplicationPool\

2. 动态压缩:压缩服务器端动态生成内容,如*.aspx等。开启动态压缩之后,服务器每次输出动态内容之前都会进行压缩,进而比较耗资源。

IIS 7.0以及更高版本支持2种压缩方法:

1. Deflate: 压缩率较Gzip更高,但除了浏览器之外,支持Deflate的平台并没有Gzip多。

2. Gzip(GNU zip) : 推荐设置此种压缩方法。

如何通过修改web.config来开启Gzip压缩

ApplicationHost.config是IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started/planning-your-iis-architecture/introduction-to-applicationhostconfig

该文件的的位置%windir%\system32\inetsrv\config

http压缩的相关配置如下:

<?

<httpCompression>节点用于配置静态压缩和动态压缩,<urlCompression>则用于开关http压缩。IIS 7.0默认开始静态压缩而关闭动态压缩,IIS 7.5及之后版本则默认开启静态压缩和动态压缩。将urlCompression节点的doStaticCompression和doDynamicCompression属性设为true即为开启压缩。在设置完成之后,重启IIS,之后去前台测试,发现700KB的js文件压缩到了300KB,效果还是不错的。

需要注意的是,ApplicationHost.config里面的配置是IIS的全局配置,会影响所有的网站。如果只想为某个网站开启http压缩,可通过修改ApplicationHost.config下httpCompression配置,将overrideModelDefault属性设置Allow,允许它在每个网站的web.config里面重新配置(urlCompression默认已经允许在web.config里重新配置)。

<section name="httpCompression" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />