怎样开启Nginx gzip压缩静态文件?
最近更新时间 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.css 和 style.css.gz,会优先发送 style.css.gz 文件。