什么是gzip
gzip
是GUNzip
的缩写,最早应用于unix
系统的文件压缩。HTTP
协议上的gzip
编码是一种用来改进web
应用程序性能的技术,web
服务器端和客户端必须同时支持gzip
。目前主流的浏览器都支持该协议,常见的服务器Apache
,Nginx
,IIS
也都支持gzip
。 gzip
通过对文件中相似的部分进行替换压缩,压缩比率通常在3到10倍左右,可以大大的减少服务器的带宽。在实际应用中,我们主要对.js
,.css
,.json
等静态文件进行压缩。 那么,客户端和服务器是如何通信来支持gzip
的呢。
- 首先,客户端发送
http
请求的时候会带上请求头accept-encoding
,并将其值设置为gzip
。表明浏览器支持gzip
。 - 服务器在接收到这个请求之后,判断浏览器是否支持
gzip
,如果支持的话,则向浏览器发送压缩后的内容,否则发送未经压缩的内容。一般情况下,服务端和浏览器都支持gzip
。response header
返回的内容中包含content-encoding:gzip
。 - 浏览器在接收到服务端的响应之后,判断该响应是否被压缩。如果被压缩,则先解压再展示内容。
原理如下图所示:
如何在IIS中开启gzip
我们这里服务器使用windows server 2012
, IIS
版本为v8.5
。 首先,打开IIS
管理器,定位到相应的站点,选择功能视图,点击压缩。
如果提示动态内容压缩没有安装,打开 服务器管理器,点击管理,选择添加角色与功能。
勾选 服务器角色 > web服务器 > 性能 > 动态内容压缩。进行安装。 安装完毕之后点击 服务器界面,点击配置编辑器。