我们知道访问网页的时候服务器与用户端之间会进行数据传输,所传输的数据除了HTTP报文本身外,还包括网页所需要的HTML文件、CSS文件、JS代码、以及媒体文件,如图片、字体、声音等,假如以上一律信息体积过大的话将会严重影响网页打开速度,增大白屏时间。这个时候我们能通过多种方式提升网页加载速度,如:
1. 将不同页面所需的js文件打包成多个小包(每个包在100KB以下最优),需要使用到某个页面时临时加载相关包,避免一个大包一次性整个下载
2. 对于小于20KB的图片用Base64编码
3. 用Icon font做图标
4. 缓存不需要升级的接口数据
除了以上方式,我们还能通过对IIS进行设置,从而进一步减少HTTP传输数据的体积。从IIS 6开始,IIS提供了一个设置。
注意,为了可以是浏览器端正确识别压缩后的文件,HTTP报文必需包含正确的Accept-encoding头信息,如:Accept-Encoding:gzip, deflate。
IIS 支持两种压缩方式:
1. 静态压缩:
将静态文件(如html、doc、xls、jpg等)一次压缩,后续请求直接用缓存中已经压缩好的文件。
2. 动态压缩:
与静态压缩不同的是,每次请求IIS都会压缩,而压缩后的版本不会被缓存下来。
IIS 支持两种压缩标准:
1. Deflate:表示采使用 (LZ77) 压缩算法,以及32位CRC校验的编码方式。
2. GZIP:采使用 zlib 结构和 压缩算法。
默认情况下,在IIS 7以及之后版本上已经启使用了HTTP压缩,但是仅启使用了静态压缩。假如想启使用动态压缩的话,能打开Windows Server Manager, Add Roles and Features, 找到ServerRoles:
不同服务器安装IIS会有少量不同,但是大同小异,按照以上方式安装完IIS后,还需要在IIS进行少量配置:
1. 首先单击应使用程序或者虚拟目录,在右侧找到Compression,双击打开:
2. 在IIS中,单击服务器名称节点,在右侧同样有一个Compression,双击打开,下面是我的配置:
好了,现在IIS就已经完全支持HTTP压缩了,接下来需要做的就是在自己的网页代码中增加Accept-encoding头信息了。在我们的实践中,一个17.8MB的文件经过HTTP压缩,能缩小到6.6MB(不要笑话项目文件暂时就这么大,哈哈),还是相当可观的。