nginx之gzip_static详解

这篇文章资料来自于网络,对部分知识整理,这里只是记录一下,仅供参考。

当然,这是在存在许多静态文件入.css时,需要考虑的性能问题。

关于 nginx 的 gzip ,可以分为两种:

  1. nginx 动态压缩,对每个请求先压缩再输出。
  2. nginx 静态压缩,使用现成的扩展名为 .gz 的预压缩文件。

        Nginx支持静态和动态两种包体gzip压缩方式,分别对应模块ngx_http_gzip_static,ngx_http_gzip。
        我们知道gzip是CPU密集型的应用,实时动态压缩比较消耗CPU资源。另外,如果使用gzip,则sendfile零拷贝技术无法使用。

        为进一步提高Nginx的性能,我们可以使用静态gzip压缩,提前将需要压缩的文件压缩好,当客服请求到达时,直接发送压缩好的.gz文件,如此就减轻了服务器CPU的压力,提高了性能。

nginx 动态压缩

开启 nginx 动态压缩只需要在 nginx.conf 文件中做如下修改即可:

# 开启和关闭gzip模式
gzip on;
# gizp压缩起点,文件大于1k才进行压缩
gzip_min_length 1k;
# 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区 
gzip_buffers 4 16k;
# 设置gzip压缩针对的HTTP协议版本
gzip_http_version 1.0;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 2;
# 进行压缩的文件类型
gzip_types text/plain application/javascript text/css application/xml;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

nginx 静态压缩

        nginx 静态压缩需要使用 ngx_http_gzip_static_module 模块,先简单看一下介绍:

ngx_http_gzip_static_module 模块允许发送扩展名为 .gz 的预压缩文件,而不是常规文件。

        该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。            该模块启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容。为了要兼容不支持gzip的浏览器,启用gzip_static模块就必须同时保留原始静态文件和gz文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用nginx的反向代理功能实现只保留gz文件。

        使用sendfile指令:如果需要对磁盘当中的内容做gzip压缩,作为http body发送给客户端sendfile就会退化,sendfile功能就没有了,需要使用gzip static模块(sendfile作为0拷贝,但是我们一定要做压缩,那么一定要读到磁盘当中)

        gzip_static 生效的前提是nginx开启了gzip_static压缩并且请求目录下存在名称相同且以.gz 结尾的文件。

        使用 gzip_static 压缩的话要先准备好压缩后的gz文件,并且服务器会消耗更多的空间来存储压缩文件和原文件,这个有利有弊要自己衡量。

在linux下可以使用命令来创建压缩文件:

tar -zcvf xx.gz xx

tar -zxvf xx.gz 这个是解压文件

安装模块

默认情况下未构建此模块,应使用 --with-http_gzip_static_module 配置参数启用它 。

在安装包目录编译安装:

./configure --with-http_gzip_static_module

然后修改 nginx.conf 配置文件:

gzip_static  on;
gzip_proxied expired no-cache no-store private auth;

nginx 动态压缩 和 静态压缩结合使用会更好:

gzip_static  on;
gzip_proxied expired no-cache no-store private auth;


gzip on; 
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript text/css application/xml;
gzip_vary on;

好处

  1. 提高CPU使用率
  2. 减少流量

        最终提高请求速率。

参考

nginx 配置 gzip_static_gzip static-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值