Nginx资源压缩
资源传输速度及资源大小严重影响页面渲染加载速度,所以对资源进行压缩是很有必要的,下面来看一下使用Nginx对资源进行压缩,以达到节省带宽资源和加快详情速度,提高系统的吞吐量。
在Nginx配置中提供了三个支持资源压缩的模块 ngx_http_gzip_module
, ngx_http_gzip_static_module
, ngx_http_gunzip_module
其中 ngx_http_gzip_module
属于内置模块,代表着可以直接使用该模块下的一些压缩指令,后续的资源压缩操作都基于该模块,来看下表的压缩配置参数/指令
参数项 | 含义 | 参数值 |
---|---|---|
gzip | 开启或关闭压缩机制 | on/off |
gzip_types | 根据文件类型选择性开启压缩机制 | image/png、text/css等 |
gzip_comp_level | 用于设置压缩级别,级别越高越耗时 | 1~9 |
gzip_vary | 设置是否携带Vary:Accept-Encoding头域的响应头部 | off/on |
gzip_buffers | 设置处理压缩请求的缓冲区数量和大小 | 如16 8k |
gzip_disable | 针对不同客户端的请求来设置是否开启压缩 | 如.Chrome. |
gzip_http_version | 指定压缩响应所需要的最低http请求版本 | 如 1.1 |
gzip_min_length | 设置触发压缩的文件最低大小 | 如512k |
gzip_proxied | 对于后端服务器的响应结果是否开启压缩 | off、expired、no-cache |
了解了Nginx中的基本压缩配置后,接下来可以在Nginx中简单配置一下
http {
gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
gzip_var on;
gzip_buffers 16 8k;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_disable "MSIE [1-6]\."; #低版本IE浏览器不支持压缩
gzip_http_version 1.1;
gzip_proxied: off;
}
在上述的配置中,最后一个 gzip_proxied
可根据系统的实际情况决定,总共有以下几种选项:
- off: 关闭Nginx对后台服务器的响应结果进行压缩
- expired: 如果响应头中包含Expires信息,则进行压缩
- no-cache:如果响应头中包含Cache-Control:no-cache信息,则开启压缩
- no-store:如果响应头中包含Cache-Control:no-store信息,则开启压缩
- private:如果响应头中包含Cache-Control:private信息,则开启压缩
- no_last_modified:如果响应头中不包含Last-Modified信息,则开启压缩
- no_etag:如果响应头中不包含ETag信息,则开启压缩
- auth:如果响应头中包含Authorization信息,则开启压缩
- any:无条件对后端的响应结果进行压缩
注意点:对于图片视频类型的数据,会默认开启压缩机制,一般无需再次开启压缩;对于.js文件而言,需要指定压缩类型为
application/javascript