优化Nginx性能通过开启Gzip压缩功能
背景:
在Web网站中,开启Gzip压缩功能有助于减小CSS、JS、XML、HTML等静态资源的传输大小,从而提高访问速度,进而优化Nginx性能。但需要注意,对于图片、视频等多媒体文件以及大文件,由于压缩效果较差,建议延长图片的生命周期以利用客户端缓存。
Gzip压缩优势:
- 节省带宽资源: Gzip压缩后,页面大小可以减小至原大小的30%甚至更小,有效节约出口带宽,提高传输效率。
- 提升用户体验: 用户浏览页面时,经过Gzip压缩后的页面能够更快地加载,提升用户的感知体验。
- 双方支持: Gzip压缩页面需要浏览器和服务器双方的支持,实际上是服务器端进行压缩,传输到浏览器后浏览器解压并解析。绝大多数现代浏览器都支持解析Gzip压缩过的页面。
Nginx Gzip 压缩配置
- 开启 Gzip 压缩:
gzip on;
- 设置允许压缩的页面最小字节数
这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小
gzip_min_length 10k;
- 设置压缩缓冲区大小:
gzip_buffers 4 16k;
- 压缩版本:
gzip_http_version 1.1;
- 设置压缩比率:
最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6
gzip_comp_level 2;
- 制定压缩的类型:
线上配置时尽可能配置多的压缩类型
gzip types text/css text/xml application/javascript;
- 配置禁用 Gzip 的条件(正则表达式):
此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_disable "MSIE [1-6]\.";
- 选择支持 Vary Header:
让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩
gzip vary on;
- Nginx 反向代理时启用 Gzip 压缩:
gzip_proxied off;
可选值:
off:关闭所有代理结果的数据的压缩expired:启用压缩,如果header头中包括"Expires"头信息no-cache:启用压缩,header头中包含"Cache-Control:no-cache"no-store:启用压缩,header头中包含"Cache-Control:no-store"private:启用压缩,header头中包含"Cache-Control:private"no_last_modefied: 启用压缩,header头中不包含"Last-Modified"no_etag:启用压缩,如果header头中不包含"Etag"头信息auth:启用压缩,如果header头中包含"Authorization"头信息any:无条件压缩
结论:
虽然开启Gzip压缩功能会消耗一定的CPU资源,但为了提供更好的用户体验,尤其是在网站性能优化方面,这是一种值得考虑的权衡。通过合理配置,可以实现在用户接收返回内容之前对其进行压缩,从而在减小传输数据大小的同时提升网站性能。
浙公网安备 33010602011771号