0%

Gzip压缩

Gzip压缩

通过gzip相关指令可以配置Gzip压缩,对响应数据进行在线实时压缩。

相关配置参数说明:

  • gzip: on; # 开启或关闭gzip功能,默认为off

  • gzip_buffers: 16 8K; # 配置Gzip压缩文件时使用的缓存空间大小,语法结构为gzip_buffers number size;

    number表示需要向系统申请的缓存空间的个数;size表示指定每个缓存空间的大小,默认number*size=128K

  • gzip_comp_level: 9; # 压缩级别,压缩程度越高,压缩效率最低,最费时间

  • gzip_min_length:# 配置最小压缩的数据大小,如果响应页面的大小大于该值,才开启Gzip功能(一些小文件会导致压缩后的大小比原文件还大),默认为20,建议设置为1k(1024)

  • gzip_http_version:1.0; # 配置只有高于指定版本的HTTP协议才能开启Gzip,默认为1.1, 目前绝大多数浏览器都支持Gzip自解压,一般采用默认值即可

  • gzip_proxied:any; # 设置是否对被代理服务器返回的数据进行压缩,前提是后端服务器返回的响应头中包含有Via头,默认为off,可选值包含有

    off 关闭nginx对后端服务器返回结果进行Gzip压缩

    expired 当后端服务器响应头中包含有expired头时,对数据进行Gzip压缩

    no-cache 当后端服务器响应头中包含有Cache-Control且值为no-cache时,对数据进行Gzip压缩

    no-store 当后端服务器响应头中包含有Cache-Control且值为no-store时,对数据进行Gzip压缩

    private 当后端服务器响应头中包含有Cache-Control且值为private时,对数据进行Gzip压缩

    no_last_modified 当后端服务器响应头中不包含有Last-Modified时,对数据进行Gzip压缩

    no_etag 当后端服务器响应头中不包含有ETag时,对数据进行Gzip压缩

    auth 当后端服务器响应头中包含有标识HTTP授权Authorization时,对数据进行Gzip压缩

    any 无条件对数据进行压缩

  • gzip_vary: on; # 开启压缩标记,开启后在响应头部添加 Vary: Accept-Encoding,默认为off,

  • gzip_types: 默认为text/html, 可以 text/plain application/x-javascript text/css application/xml text/javascript; # 对指定类型的文档进行Gzip压缩

  • gzip_static:on; # 对于存在服务器上.gz作为后缀的文件,且客户端浏览器支持gzip压缩,就直接返回压缩后的数据,可选值

    on 开启

    off 关闭

    always 一直发送.gz文件,而不检查客户端浏览器是否支持Gzip压缩

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#将访问的文件压缩传输 (减少文件资源大小,提高传输速度)
#当访问内容以gif或jpg结尾的资源时
location ~ .*\.(gif|jpg)$ {
gzip on; #开启
gzip_http_version 1.1; #服务器传输版本
gzip_comp_level 2; #压缩比,越高压缩越多,压缩越高可能会消耗服务器性能
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss image/jpeg image/gif image/png; #压缩文件类型
gzip_vary on;
gzip_min_length 1024;
root /www/app/web; #对应目录(去该目录下寻找对应文件)
}

#直接访问已压缩文件
#当访问路径以download开头时,如www.baidu.com/download/test.img
#去/www/app/web目录下寻找test.img.gz文件,返回到前端时已是可以浏览的img文件
location ~ load^/download {
gzip_static on #开启;
tcp_nopush on;
root /www/app/web;
}

欢迎关注我的其它发布渠道