一文读懂nginx gzip_static

本文介绍了Nginx的gzip_static模块,用于提高性能,通过预先压缩静态文件并直接发送.gz文件来减少CPU资源消耗。讲解了如何同步源文件和.gz文件的修改时间,以及gzip_static和gzip模块的区别,包括Content-Encoding和Content-Length的处理。同时,讨论了always参数的使用,以及在curl和Chrome中观察gzip_static行为的方法。
摘要由CSDN通过智能技术生成

Nginx支持静态和动态两种包体gzip压缩方式,分别对应模块ngx_http_gzip_static,ngx_http_gzip。
我们知道gzip是CPU密集型的应用,实时动态压缩比较消耗CPU资源。另外,如果使用gzip,则sendfile零拷贝技术无法使用。为进一步提高Nginx的性能,我们可以使用静态gzip压缩,提前将需要压缩的文件压缩好,当客服请求到达时,直接发送压缩好的.gz文件,如此就减轻了服务器CPU的压力,提高了性能。缺省ngx_http_gzip_static模块并未启用,需要重新编译。

#注:根据需要自行添加其它参数
./configure --with-http_gzip_static_module

准备.gz文件:所有待压缩的文件,需要保留源文件和.gz文件,在相同WEB目录。如下,以index.html为例。

#压缩保留源文件的方法:
[root@test01 html]# gzip -c index.html > index.html.gz
[root@test01 html]# ll index.*
-rw-r--r--. 1 root root 620 Jun 23  2021 index.html
-rw-r--r--. 1 root root 401 Jun 23  2021 index.html.gz

使用touch同步源文件和.gz文件的修改时间。文件修改时间对应Last-Modified响应字段,HTTP缓存中使用很广泛,同步二者时间,目的是保持缓存过期判断的一致性。

touch index.html.gz -r index.html

添加配置文件:

gzip_static on;

gzip_static优先级高于gzip,$gzip_ratio对于gzip_static不生效,如果gzip_static失效,如缺少.gz,则gzip会生效。
gzip_static生效时,和gzip不同,Content-Encoding和Cotent-Length可以同时存在,因为响应在发送前已经明确其大小。

实际执行的效果:

[root@test01 html]# 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 Windows 下给 nginx 添加 gzip_static_module 模块,需要重新编译 nginx。以下是具体步骤: 1. 安装 Visual Studio 首先需要安装 Microsoft Visual Studio,官网下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 2. 下载 nginx 源码 从 nginx 官网下载最新的 nginx 源码:http://nginx.org/en/download.html 3. 解压 nginx 源码 解压下载的 nginx 源码到任意目录,如:C:\nginx-1.20.1 4. 安装 Perl nginx 的编译过程需要用到 Perl,需要安装 Perl。官网下载地址:https://www.perl.org/get.html 5. 安装 PCRE PCRE 是一个支持正则表达式的库,nginx 的编译过程需要用到。可以从这里下载最新的 PCRE:https://ftp.pcre.org/pub/pcre/ 将解压后的文件夹复制到 C 盘根目录,如:C:\pcre-8.44 6. 安装 zlib zlib 是一个压缩库,nginx 的编译过程需要用到。可以从这里下载最新的 zlib:https://zlib.net/ 将解压后的文件夹复制到 C 盘根目录,如:C:\zlib-1.2.11 7. 编辑 nginx 配置文件 在 C:\nginx-1.20.1 目录下找到 conf 目录,编辑 nginx.conf 文件,在 http 模块中添加以下内容: ``` gzip_static on; ``` 8. 编译 nginx 打开 Visual Studio,选择 “文件” -> “打开” -> “项目/解决方案”,找到 C:\nginx-1.20.1 目录下的 nginx.sln 文件,双击打开。 在 Visual Studio 中选择 “生成” -> “生成解决方案”,等待编译完成。 9. 替换旧的 nginx.exe 编译完成后,会在 C:\nginx-1.20.1\objs 目录下生成新的 nginx.exe 文件。将该文件替换旧的 nginx.exe 文件,重启 nginx 服务器即可。 注意:以上步骤仅适用于 Windows 平台下的编译和安装,Linux 平台下的编译和安装方法略有不同。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值