随着互联网应用的日益丰富,网页的大小也在不断增加,这导致页面加载时间变长,影响了用户体验。为了解决这个问题,可以通过配置IIS服务器的HTTP压缩功能来减小响应数据的大小,从而提高页面加载速度。本文将详细介绍HTTP压缩的必要性、效果、适用场景以及如何在IIS上进行配置。
在构建富互联网应用时,页面的大小会显著增加,这意味着页面加载需要更多的时间。IIS服务器提供了压缩响应的功能,而大多数现代浏览器都支持HTTP压缩。这意味着可以在Web服务器上配置HTTP压缩,浏览器将能够理解并处理这种压缩。
通常有两种压缩算法:gzip和deflate。在网站上使用gzip后,发现页面大小减少了60%到70%。这是一个显著的性能提升。
如果页面大小本身就很小(例如小于60到70KB),那么可能不需要压缩。此外,如果用户拥有高速互联网连接,那么压缩/解压缩的开销可能不值得,因为压缩带来的性能提升并不明显。
当浏览器向IIS发送请求时,它会发送关于它支持的编码类型的信息。可以通过多种工具(例如Firefox的Firebug插件)查看请求头。在请求头中,将看到如下行:
Accept-Encoding: gzip,deflate
这表示浏览器接受gzip和deflate编码。当IIS接收到请求并发现请求者可以理解给定的编码时,它会根据配置对响应进行编码。
实际上,当浏览器向服务器发送请求时,它会告诉服务器它支持的所有编码,这可以在请求头中找到。如果它不支持,它可能不会发送Accept-Encoding标签。当IIS接收到请求并且没有找到请求者支持的任何编码机制时,它不会应用任何压缩/编码机制,响应将以普通格式发送。因此,不需要担心如果任何浏览器不理解gzip或deflate会发生什么。IIS会处理这种情况,只有在请求者支持时才会进行编码。
有两种类型的压缩可以在IIS上配置:静态(针对静态文件,如CSS、JavaScript文件等)和动态(针对动态生成的页面/响应)。没有控制台可用于配置HTTP压缩,因此有两种方法可以配置IIS上的HTTP压缩。
第一种方法是直接更新IIS的metabase文件。第二种方法是使用命令来更新它。本文将讨论第二种方法,并介绍用于配置的命令。
首先,打开命令提示符并转到IIS根文件夹,通常是“c:\inetpub\adminscripts\”,然后按照以下步骤操作。
要查看是否启用了压缩:
cscript adsutil.vbs get w3svc/filters/compression/parameters/HcDoStaticCompression
启用/禁用静态压缩:
adsutil.vbs set w3svc/filters/compression/parameters/HcDoStaticCompression true/false
要查看哪些文件将被编码:
cscript adsutil.vbs get W3SVC/Filters/Compression/gzip/HcFileExtensions (for gzip)
cscript adsutil.vbs get W3SVC/Filters/Compression/deflate/HcFileExtensions (for deflate)
要添加更多文件进行压缩:
cscript adsutil.vbs set W3SVC/Filters/Compression/gzip/HcFileExtensions "js" "css" "png" "bmp" "swf" "doc" "docx" (for gzip)
cscript adsutil.vbs set W3SVC/Filters/Compression/deflate/HcFileExtensions "js" "css" "png" "bmp" "swf" "doc" "docx" (for deflate)
要查看是否启用了压缩:
cscript adsutil.vbs get w3svc/filters/compression/parameters/HcDoDynamicCompression
启用/禁用动态压缩:
cscript adsutil.vbs set w3svc/filters/compression/parameters/HcDoDynamicCompression true/false
要查看哪些文件将被编码:
cscript adsutil.vbs get W3SVC/Filters/Compression/gzip/HcScriptFileExtensions (for gzip)
cscript adsutil.vbs get W3SVC/Filters/Compression/deflate/HcScriptFileExtensions (for deflate)
要添加更多文件扩展名:
cscript adsutil.vbs set W3SVC/Filters/Compression/deflate/HcScriptFileExtensions "asp" "exe" "dll" "aspx" "asmx" (for gzip)
cscript.exe adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "exe" "dll" "aspx" "asmx" (for deflate)