测试 gzip 是否开启
request 如果包含了 Accept-Encoding: gzip,deflate
头,则表示允许内容允许 gzip 压缩,是否真的压缩要看HTTP服务器是否启动 gzip。
可以查看返回的 response 是否包含 Content-Encoding: gzip
来判断是否压缩,或查看返回值的大小:
curl https://localhost/app.js --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null
IIS启动gzip
https://stackoverflow.com/questions/25580078/how-to-enable-gzip-compression-in-iis-7-5/27496937
修改%windir%\System32\inetsrv\config\ApplicationHost.config
配置文件:
<!-- 找到 name="gzip" 添加以下 dynamicTypes -->
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
然后重启 IIS 的某个服务器即可。
nginx启动gzip压缩
修改 /etc/nginx/nginx.conf
配置文件:
# http上下文中添加即可
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
# 需要注意的是 nginx 的 js 文件返回的 Content-Type 头是 application/javascript 而不是 application/x-javascript
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;