怎样开启Nginx gzip压缩静态文件?

Lasted 2020-01-10 23:25:29

Gzip 是一种压缩文件格式,gzip 模块在 nginx 里面经常用到,压缩响应的数据,这通常有助于将传输数据的大小减少一半甚至更多。可以让网站更为流畅。

Gzip 的基础是 DEFLATE,DEFLATE 是 LZ77 与哈夫曼编码的一个组合体。DEFLATE 最初是作为 LZW 以及其它受专利保护的数据压缩算法的替代版本而设计的,当时那些专利限制了 compress 以及其它一些流行的归档工具的应用。

开启 gzip 压缩

http {

 gzip on;

}

修改配置文件,重启 Nginx 后刷新页面,如果在服务器返回头部有如下信息表示开启成功,刷新页面后如果没有如下信息,可能是文件太小没有启动压缩,这个参数可以设置,在后面介绍。

Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html

 完整参数介绍:

gzip on;
默认:关闭。开启或关闭 gzip 压缩。
gzip_buffers 16 8k;
置系统获取几个单位的缓存用于存储 gzip 的压缩结果数据流。32 4k 代表以 4k 为单位,安装原始数据大小以 4k 为单位的 32 倍申请内存。
gzip_comp_level 1
设置gzip的压缩级别,取值[1-9],数值越大压缩率越高,压缩时消耗的资源越多,通常合理取值是4-6。
gzip_disable "MSIE [4-6]\."
将 "User-Agent" 请求头进行正则匹配,满足正则的请求对其响应时不启用 gzip 压缩,通常用来去除 ie6 等对 gzip 压缩支持不是很好的浏览器的 gzip 压缩。
gzip_http_version 1.1
设置 gzip 的压缩级别,取值[1-9],数值越大压缩率越高,压缩时消耗的资源越多,通常合理取值是4-6。
gzip_comp_level 1
默认:gzip_comp_level 1。设置gzip的压缩级别,取值 [1-9],数值越大压缩率越高,压缩时消耗的资源越多,通常合理取值是 4-6。
gzip_min_length 20
启用 gizp 压缩的响应临界值大小,仅与响应头的 "Content-Length" 的值进行比较,只有大于 gzip_min_length 的响应才会进行压缩,比较合理的值是 1000。
gzip_proxied off
根据请求和响应,启用或禁用压缩代理请求的响应。
gzip_types text/html
指定需要压缩的响应内容类型,例如text/css application/javascript application/json application/xml分别表示对css js json xml进行压缩,多个用空格分开,*表示所有。注意:text/html类型总会被压缩,不需要显式的指定。
gzip_vary off
表示是否添加 "Vary: Accept-Encoding" 响应头。

设置某个路径下压缩

location /storage/ {
 gunzip on;
 ...
}

直接发送压缩的文件

location / {
 gzip_static on;
}

如果配置文件中开启 gzip_static on; 服务器会优先发送已经压缩过的 .gz 文件,前提是需要先使用 gzip 工具压缩同名的 .gz 文件,比如目录下同时存在 style.cssstyle.css.gz,会优先发送 style.css.gz 文件。