分享个人 Full-Stack JavaScript 项目开发经验
Nginx 默认启用的 gzip 模块可以帮助我们将来自上游服务器的响应进行压缩后再传递给客户端,以减少响应的传输时间。
在 http 部分使用压缩配置,使它作用于所有 server。
http {
include my_gzip.conf;
}
考虑到有些文件类型的压缩效果不好。对于旧版本的 IE 浏览器也不能够响应压缩内容。所以 my_gzip.conf 使用如下配置:
gzip on;
gzip_comp_level 4;
gzip_types text/plain text/css text/javascript text/xml application/xml application/xml+rss application/x-javascript application/javascript application/json;
gzip_min_length 1k;
gzip_buffers 43 4k;
gzip_vary on;
gzip_http_version 1.0;
gzip_disable msie6;
以上使用的 gzip 模块指令说明如下:
指令 | 说明 |
---|---|
gzip | 启用或禁止压缩功能,默认值:off。 |
gzip_comp_level | 压缩级别(1~9),默认值:1。压缩级别越高,压缩耗费的时间就越长。一般取值为 4 或 5,可根据实际效果调整。 |
gzip_min_length | 在启用压缩之前确定上游服务器的响应长度,由 Content-Length 响应头决定,大于该长度时启用压缩,默认值:20。 |
gzip_buffers | 指定用于压缩上游服务器响应的缓冲数量和大小,默认值:32 4k 或 16 8k(平台依赖)。由于博客前台使用的最大 js 文件大小为 168k,故设置为 43 4k 使可以一次压缩整个文件。 |
gzip_vary | 如果启用了压缩,该指令控制是否添加 Vary: Accept-Encoding 响应头。设置了该响应头,当客户端不支持服务器的压缩机制时,服务器响应将不会从缓存的压缩版本中提供,而是视为一个新请求。默认值:off。 |
gzip_http_version | 指定高于该 HTTP 版本可启用压缩功能,默认值:1.1。 |
gzip_disable | 指定一个匹配 User-Agents 的正则表达式,符合的被禁用压缩。特定值 msie6 是 MSIE[4-6]\. 的简写。 |
有关上面的 gzip_types 中的 MIME 类型说明如下:
类型/子类型 | 资源说明 |
---|---|
text/plain | 普通文本 |
text/css | css 文本 |
text/javascript | javascript 文本(过时) |
text/xml | xml 文本 |
application/xml | xml 二进制数据 |
application/xml+rss | rss xml 二进制数据 |
application/x-javascript | 非标准的 javascript 二进制数据(过渡) |
application/javascript | javascript 二进制数据(标准) |
application/json | json 二进制数据 |
对于 text/html MIME 类型在 gzip_types 默认是总会包含它,所以我们不需要再显式地声明它。
要了解更多 MIME 类型的介绍,请点击这里。