- Published on
- 约 795 字
nginx配置高性能的gzip压缩
- Authors
- Name
- 小辉辉
前言
nginx对程序员来说都很熟悉了,前端可以用来当作一个服务器来部署静态资源文件,后端一般用来当作方向代理服务器来使用,将多个服务对外暴露出一个地址来使用。
我作为一个前端开发,和nginx打交道的还是真不少了,就拿这个博客来说就是部署在nginx后面的。
一般来说我们为了提升文件的加载性能都会设置下nginx的缓存配置,首页文件经常由于需要经常更新不缓存,除此之外的js和css还有图片等文件会设置较长的缓存时间,一般是一年。
另外大家都知道页面打开的时间和文件资源加载的大小有很大关系,所以为了减少资源我们常常会开启nginx的gzip配置,一般的js文件还有css文件都会有很明显的压缩效果。
gzip属性分析
这里讲下开启gzip的方式,我们常规用的压缩默认是动态压缩,什么意思呢?就是nginx在接收到外部文件请求时,会先对文件进行一次压缩步骤,等到压缩结束后再将文件返回给客户端。
具体的配置如下:
server {
gzip on; # 开启
gzip_buffers 32 4K;
gzip_comp_level 6; # 压缩等级,数字越大文件越小
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
}
这里不对每个属性详细讲了,具体可以参考官网的参考地址。
一般我们用gzip到这里就会结束了,但是默认的配置会有什么问题呢?那就是每次请求都会执行压缩操作,要知道压缩背后的算法需要大量的cpu计算,所以一旦请求很密集的时候,服务器的cpu必然承受不了这么多的压缩计算,所以针对这个问题nginx就提供了一个静态压缩方案。
静态压缩的主要思想就是在服务器上预设好已经压缩好的文件,这样nginx只需要直接返回这个文件就可以了,一般是以.gz结尾,如果压缩文件不存在,依旧使用原始文件,这样一来nginx就无需再执行压缩操作,这样的话我们的nginx又能扛住大流量了。
开启静态压缩
配置文件同上述动态压缩形式,但是需要额外启用ngx_http_gzip_static_module
模块,开启方式:
$ ./configure --prefix=/usr/local/nginx --with-http_gzip_static_module make && make install
通过下面命令确认是否启用成功
$ nginx -V 2>&1| grep -o http_gzip_static_module
输出http_gzip_static_module
表示启用成功。
配置说明:
gzip_static on; # 放在动态压缩参数前面
结论
一般来说对于固定的文件内容,我们可以通过生成.gz文件结合gzip_static功能来大幅度提升nginx的性能,但是考虑到有些动态生成的内容,例如后端接口返回的数据只能使用动态压缩了。