当前位置: 首页 > news >正文

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-CSDN博客

相关文章:

  • Matplotlib查看 rc 参数的方法
  • JNI 本地方法调用 Java 静态方法 和 实例方法对比;通过本地方法创建 Java 对象;本地方法访问 Java 数组元素;本地方法错误返回给 Java
  • Linux Shell 基础操作笔记
  • charles接口测试(断点测试)
  • 本人设计的最完全的光压发电机模型
  • 05_循环结构三目运算符
  • Spring MVC 配置详解与入门案例
  • SpringBoot 面试八股文
  • 基于@Scheduled注解(静态配置)实现定时任务
  • SQL调优
  • 搭建PG库和安装pgvector、pgRouting插件
  • uniapp 微信小程序图片下载保存功能
  • TypeScript 泛型 < T > 从入门到精通
  • 可视化图解算法:删除有序(排序)链表中重复的元素
  • 基于AOP注解+Redisson实现Cache-Aside缓存模式实战
  • 春日焕新居:约克VRF中央空调,科技赋能,带你开启健康呼吸新时代
  • 力扣题目分享:只出现1次的数字I II III(位运算版)
  • 宝塔docker flarum默认登录账号密码,crazymax/flarum镜像默认登录账号密码
  • 蓝桥杯算法题分享(二)
  • 从 Copilot 到垂直工具:AI 编程的 “专精特新“ 进化论
  • 福州市委副书记、福州新区党工委书记陈云水转任三明市政协党组书记
  • 上海普陀:原则同意将工业河更名为同济湾河
  • 昆明一小区火灾调查报告:七旬夫妇身亡,生前拾荒存放大量可燃物
  • 海南乐城管理局原局长贾宁已赴省政协工作,曾从河南跨省任职
  • 上海百年龙华码头开启新航线,弥补浦江游览南段空缺
  • 商务部:对原产于美国、欧盟、台湾地区和日本的进口共聚聚甲醛征收反倾销税