首页 > 其他分享 >配置Gzip压缩,含前后端步骤

配置Gzip压缩,含前后端步骤

时间:2024-01-30 14:49:21浏览次数:23  
标签:http nginx -- 步骤 压缩 gzip Gzip local

启言

在使用 vite 进行项目打包时,默认已经帮我们做了一些优化工作,比如代码的压缩,分包等等。

除此之外,我们还有一些可选的优化策略,比如使用 CDN ,开启 Gzip 压缩等。本文会介绍在 vite 中使用插件来开启 Gzip 压缩。

如果你用的是其他脚手架,可以自行前往搜索,这里只基于vite进行介绍。

一、什么是Gzip

Gzip 是一种压缩算法,在网络传输中使用非常普遍。

需要注意的是,Gzip 压缩仅对于文本类型的资源有明显提示,压缩后的体积大约是压缩前的 1/3。

但是对于图片,音视频等媒体资源,本身就采用了有损压缩,所以再使用 gzip 并不能得到很大提升,有时候反而会适得其反。

二、前端项目如何配置开启Gzip

前端项目,打包出的 js,css资源,非常适合使用 gzip 进行压缩。

这样,用户浏览器收到服务器返回的 gzip 类型资源时,会自动解压缩。这样,既能减少带宽的损耗,也能加快资源传输的时间。

1. 首先安装插件:

pnpm add -D vite-plugin-compression

2. 配置文件:

// vite.config.js

import viteCompression from 'vite-plugin-compression'

export default defineConfig({
  plugins: [
    // ...
    viteCompression({
      threshold: 1024000 // 对大于 1mb 的文件进行压缩 需要更改大小可以自己进行换算
    })
  ],
});

3. 进行项目打包:

可以看到,基本都被压缩了三四倍,压缩带来的提升非常明显。
image

三、后端Nginx配置

1、检查nginx模块

首先要检查一下nginx的模块,找到nginx的启动文件,我的是/usr/local/nginx,如果你找不到可以使用 ps -ef | grep nginx 命令找到master进程所在的目录,进入sbin目录然后执行./nginx –V,注意是大写的V,查看结果如下:
image
第一行是nginx的版本,我的是1.16.1,重点是最后一行,我的nginx安装了很多模块,其中我们需要的就是红框部分 --with-http_gzip_static_module,有的话那就不需要下面的步骤了,可以直接跳到第2步,如果没有那就继续往下看。

2、加入模块重新编译

如果我们在上面步骤里发现nginx没有gzip_static模块的话,那就需要我们重新编译安装一下nginx。

首先需要找到nginx的源码路径,如果不知道可以执行find / -name nginx查找,我的在/usr/local/nginx-1.16.1,然后cd到这个目录,可以先使用ll命令看一下有没有configure文件,如果有说明源码目录找对了,如果没有则再查找一下,实在找不到那就说明源码已经被删了,那就只能卸载当前nginx整个重装了。

如果第一步看到的nginx已有一些模块,则需要把这些已有的模块复制下来,然后再后面加上--with-http_gzip_static_module,执行如下命令:
./configure --prefix=/usr/local/nginx --modules-path=...[整个复制]... --with-http_gzip_static_module
如果第一步看到的一个模块都没有的话,那就直接重新编译,注意 --prefix=后面写ng所在路径:

再次提醒,注意,这里--prefix=后面,要写上自己的nginx路径,如果这里不仔细,后面会导致nginx无法启动
./configure --prefix=/usr/local/nginx --with-http_gzip_static_module

3、安装

执行命令make,进行安装
make

4、备份

为了确保安全,将旧的nginx做一个备份(目录如果不一样记得更换)
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

5、覆盖原来的nginx

先把nginx服务停止掉
ps -ef | grep nginx
或者
nginx -s stop
或者
killall nginx
找到master进程并且将其kill掉。复制安装好的新的nginx文件覆盖旧的:
cp ./objs/nginx /usr/local/nginx/sbin/

6、验证

查看模块
/usr/local/nginx/sbin/nginx -V
如果出现 gzip_module说明安装成功。

7、在nginx.conf添加gzip配置

一般是在http里面加,也可以在某个server里加

http {
	gzip on;
	gzip_static on;
	gzip_min_length  5k;
	gzip_buffers     4 16k;
	gzip_http_version 1.0;
	gzip_comp_level 7;
	gzip_types       text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
	gzip_vary on;
} 

其中:gzip_static on; 是为了命中dist里的gz文件,其他的配置是服务器实时压缩配置,一般两种都写上,有静态gz文件的会优先返回gz文件,没有的话就会开启实时压缩,实时压缩是比较耗服务器资源的。

8、配置项释义:

# 开启服务器实时gzip
  gzip on;
  # 开启静态gz文件返回
  gzip_static on;
  # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
  gzip_min_length 1k;
  # 设置压缩所需要的缓冲区大小
  gzip_buffers 32 4k;
	# 设置gzip压缩针对的HTTP协议版本
  gzip_http_version 1.0;
  # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
  gzip_comp_level 7;
  # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
  # 是否在http header中添加Vary: Accept-Encoding,建议开启
  gzip_vary on;
  # 禁用IE 6 gzip
  gzip_disable "MSIE [1-6]\.";

9、完成配置后记得重新启动 nginx

nginx
如果这里你报错,找不到日志文件,或者找不到什么配置文件,大概率就是你第二步的时候,只顾着复制,导致nginx路径错误

你需要去找到你服务器的nginx路径,然后从第二步开始重新走一遍配置流程。

至此配置完毕。

四、成果展示
检测网站:网页GZIP压缩检测 - 站长工具

配置之前:
检测网站:网页GZIP压缩检测 - 站长工具 (chinaz.com)

配置之前
image
配置之后:
image

标签:http,nginx,--,步骤,压缩,gzip,Gzip,local
From: https://www.cnblogs.com/guozhiqiang/p/17997058

相关文章

  • ubuntu18.04 局域网配置git server步骤
    1.安装ssh2.安装gitsudoapt-getupdatesudoaptinstallvimsudoaptinstallopenssh-serversudoaptinstallgit3.cdhome目录mkdircodecdcodegitinit--baretest.git#创建git-server仓库远程服务器远程地址:/home/joker/code/test.git4.本地电脑目录操作......
  • Jenkins的部署过程,从输入分支名开始,后台都经历了哪些步骤?
    前言大家好,我是chowley,Jenkins是我们QA常用的环境部署工具,今天我来总结一下,从我们输入分支名开始,它都经历了哪些流程?本文将深入探讨Jenkins的部署过程,从分支输入到后台处理的每个关键步骤。整体流程Jenkins作为一个流行的开源持续集成和持续交付工具,它的部署过程涉及多个关键步......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序,该......
  • GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤
    1.算法运行效果图预览 低信噪比下仿真结果如下:  2.算法运行软件版本matlab2022a 3.算法理论概述        GPS(全球定位系统)信号的数字接收处理是GPS接收机核心技术之一,它涉及到从接收到的卫星信号中提取导航数据和解算出位置信息的一系列处理过程。这个......
  • 在linux中安装nginx 集群 步骤 实例 双语版
    以下是在Linux中安装Nginx集群的步骤:在每个节点上安装Nginx软件包。可以使用包管理系统安装,如apt-get或yum,或者从Nginx官方网站下载源码进行编译和安装。创建一个共享的存储区来存放Nginx配置文件和日志文件。这可以是本地文件系统的共享目录,也可以是网络文件系统(NFS)。创建一个Ngin......
  • 机械加工行业MES系统实施步骤
    机械加工领域归属于离散型的生产,顾客人性化要求多,产品种类日趋多元性,市场的需求变化快,预测分析难度系数扩大,公司难以有效的分配生产.万界星空科技机加工MES系统要应用到车间制造中,应对MES的推进过程做总体的规划。通过数字化车间的建设,解决企业车间管理信息技术和工业技术的融合问......
  • C#对象二进制序列化优化:从位域技术优化压缩数据大小
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结 1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们......
  • Go语言实现HTTP代理的原理与步骤
    在计算机网络中,代理服务器是一种重要的中间件,它能够帮助客户端和服务器进行通信,并处理各种网络请求和响应。在Go语言中,我们可以使用标准库中的"net/http"包来实现一个简单的HTTP代理服务器。下面我们将介绍实现HTTP代理的原理与步骤。一、代理服务器的工作原理代理服务器的工作原理......
  • 用C++11打造智能观察者模式:详解实现步骤完整示例代码
     观察者模式是一种行为设计模式,其中一个对象(主题)维护其依赖对象(观察者)的列表,当主题的状态发生变化时,它通知所有观察者。以下是一个使用C++11实现观察者模式的简单例子:定义观察者接口(Observer): 创建一个观察者接口,该接口包含观察者需要实现的更新方法。这个接口可以包含其他......
  • 大模型系统和应用——高效训练&模型压缩
     背景介绍预训练语言模型以每年十倍的速度增大,越大的模型往往表现出更好的性能;但为了训练这些模型耗费也越来越昂贵,训练代码变得更复杂。我们希望让训练过程变得更加简单,训练变得更高效,并且训练更加廉价。首先我们要分析GPU内存;其次理解在多张显卡之间的合作模式是怎样的......