广告位联系
返回顶部
分享到

nginx gzip 动态静态压缩介绍

nginx 来源:互联网 作者:佚名 发布时间:2023-09-22 23:48:14 人浏览
摘要

gzip压缩是解决编译产物体积过大、缩短静态资源请求时长的常用手段之一,我们在网站上经常能看到Content-Encoding: gzip这个 http 响应头,表示内容使用 gzip 压缩;gzip压缩分为动态压缩与

gzip压缩是解决编译产物体积过大、缩短静态资源请求时长的常用手段之一,我们在网站上经常能看到 Content-Encoding: gzip 这个 http 响应头,表示内容使用 gzip 压缩;gzip压缩分为动态压缩与静态压缩,下面浅浅的介绍下这两种方式以及使用;

动态压缩

动态压缩实际上就是由nginx服务器对编译造物进行压缩,需要在nginx.conf的http、https模块中开启下面的配置:

1

2

3

4

5

6

7

8

    gzip  on; # 开启gizo压缩

    gzip_min_length 1k; # gizp压缩起点,文件大于1k才进行压缩

    gzip_comp_level 6; # 压缩级别 数字越大压缩得越小 但是越耗性能 根据实际情况而定

    gzip_proxied any; # nginx做为反向代理时启用, 详细见官方文档:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_proxied

    gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding

    gzip_buffers 16 8k; # 设置压缩所需要的缓冲区大小,以8k为单位,案例中则申请16*4k的缓冲区

    gzip_http_version 1.1; # http的版本

    gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # 文件类型

更改完配置,重启nginx服务器,查看静态资源响应头,出现Content-Encoding: gzip ****则代表开启成功;

静态压缩

动态压缩是在服务器上进行的,压缩级别越高越耗性能,静态压缩就是为了解决这个问题而生的,开启静态压缩后,nginx会自动寻找.gz后缀的文件,如果没有则返回源文件;于是乎,我们就可以在前端构建的时候进行gzip压缩;

以vite为例,我们需要引入vite-plugin-compression插件,并且在vite.config.js中按照下面的方式配置;

1

2

import viteCompression from 'vite-plugin-compression'; // gzip

plugins: [ viteCompression() ]

插件支持自定义,主要配置如下

1

2

3

4

5

verbose: true, // 是否在控制台输出压缩结果 这里我们打开查看压缩的效果

disable: false, // 是否禁用

threshold: 10240, // 大于这个值才进行压缩 单位为b

algorithm: 'gzip', // 算法 除了gzip还有 ['brotliCompress' ,'deflate','deflateRaw']

ext: '.gz', // 输出的后缀

引入插件后编译,我们即可看见编译文件中会多出一些.gz结尾的文件,这些便是压缩的产物,查看编译输出,我们可以看到

1

dist/D:/code/vue/mine/waylon-blog/packages/waylon-blog-pages/assets/index-d023f1e5.css.gz                                  598.32kb / gzip: 67.81kb

一个598.32kb的css文件经过压缩之后大小变成了67.81kb;

将静态资源部署到服务器上,在nginx.conf中开启下面的配置,nginx会自动去寻找.gz结尾的文件,直接返回给客户端,这就是所谓的静态压缩;

1

gzip_static on

坑点!!!

1,nginx对静态压缩的文件要求较高,必须与原文件同时生成,如果不是同时生成的,那么nginx将无法进行匹配(对于这一点,笔者在引入插件后源代码未变更,导致gz文件与原文件时间不一致,导致静态压缩不生效);

官网原话:

The files can be compressed using the gzip command, or any other compatible one. It is recommended that the modification date and time of original and compressed files be the same.

2,nginx默认是没有安装ngx_http_gzip_static_module静态压缩模块的,需手动开启,开启方法这里不赘述,直接上指令:

找到安装路径的configure文件以后,就在这个文件夹下,执行如下命令

1

./configure  --with-http_gzip_static_module

等待执行完毕以后就是执行make指令

1

make

动静结合

实际应用中我们通常会采取静态压缩+动态压缩结合的方式来处理我们的静态资源,静态压缩的优先级会高于动态压缩,并不是说压缩的越到小越好,如果已经进行过静态压缩的文件就没有必要再进行动态压缩了,因为这样浪费性能,得不偿失,所以动态压缩的gzip_min_length这个配置尤为重要,能让我们避免一些无谓的操作;

经过上面一系列操作之后,可以用站长工具测试下压缩的效果,直接将静态资源的连接复制进去即可:https://tool.chinaz.com/Gzips/?q=c.nxw.so

如图

文档参考:

http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html

http://nginx.org/en/docs/http/ngx_http_gzip_module.html


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Kubernetes中Nginx服务启动失败排查流程分析(Error:

    Kubernetes中Nginx服务启动失败排查流程分析(Error:
    ?pod节点启动失败,nginx服务无法正常访问,服务状态显示为ImagePullBackOff。 1 2 3 [root@m1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-f89759699-
  • nginx gzip 动态静态压缩介绍

    nginx gzip 动态静态压缩介绍
    gzip压缩是解决编译产物体积过大、缩短静态资源请求时长的常用手段之一,我们在网站上经常能看到Content-Encoding: gzip这个 http 响应头,表示
  • Nginx显示500错误的原因以及解决方法

    Nginx显示500错误的原因以及解决方法
    最近在操作nginx 的时候出现了 Nginx 500 内部错误,在此记录一下原因,项目采用的是前后端分离方式,后端SpringBoot ,前端是Vue 部署到Nginx
  • 使用ChatGPT解决Nginx反向代理的问题
    我有 3 台服务器,1台Web服务器对外提供访问,另外两台服务器 QC1 和 QC2 用于存储不同设备识别后保存的照片。它们的 IP 地址如下: 服务器
  • nginx使用rewrite报错的解决

    nginx使用rewrite报错的解决
    今天编译安装nginx的时候想着要做rewrite功能,匆忙瞟了一眼编译文档就直接makemake install了,然后再修改配置文件的时候一直报错,语法死活
  • Nginx配置二级域名的方法实现
    当一个域名需要使用在两个项目上后,我们就需要使用到二级域名,在 Nginx 中配置二级域名如下: 1、原始配置文件如下 1 2 3 4 5 6 7 8 9 10
  • win10系统安装Nginx的详细步骤介绍

    win10系统安装Nginx的详细步骤介绍
    ginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务。 Nginx可以进行反向代理、负载均衡、HTT
  • nginx降权与匹配php详细结束

    nginx降权与匹配php详细结束
    nginx降权启动 确认普通用户无法开启nginx 创建普通用户: 1 2 3 4 5 6 root@ubuntu:~# useradd -d /home/test -m test root@ubuntu:~# passwd test New password: Retype
  • Nginx隐藏server头信息的实现介绍
    分析 上一篇文章我们搭建了Nginx,请求响应头如下 1 2 3 4 5 6 7 8 9 10 [nginx@node01 sbin]$ curl -I 127.0.0.1:8090 HTTP/1.1 200 OK Server: nginx/1.9.9 Date: Fri, 11
  • nginx配置x-forwarded-for头部的方法介绍

    nginx配置x-forwarded-for头部的方法介绍
    nginx配置x-forwarded-for头部 本地用tomcat起了一个j2ee的应用,然后又起了一个nginx做反向代理。 nginx.conf: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计