优化Nginx性能通过开启Gzip压缩功能

背景:
在Web网站中,开启Gzip压缩功能有助于减小CSS、JS、XML、HTML等静态资源的传输大小,从而提高访问速度,进而优化Nginx性能。但需要注意,对于图片、视频等多媒体文件以及大文件,由于压缩效果较差,建议延长图片的生命周期以利用客户端缓存。

Gzip压缩优势:

  1. 节省带宽资源: Gzip压缩后,页面大小可以减小至原大小的30%甚至更小,有效节约出口带宽,提高传输效率。
  2. 提升用户体验: 用户浏览页面时,经过Gzip压缩后的页面能够更快地加载,提升用户的感知体验。
  3. 双方支持: 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资源,但为了提供更好的用户体验,尤其是在网站性能优化方面,这是一种值得考虑的权衡。通过合理配置,可以实现在用户接收返回内容之前对其进行压缩,从而在减小传输数据大小的同时提升网站性能。

posted on 2023-11-30 17:04  龙泉寺老方丈  阅读(105)  评论(0)    收藏  举报