前端性能优化之gzip

news/2024/6/28 12:40:25

gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

当然WEB服务器和客户端(浏览器)必须共同支持gzip。目前主流的浏览器Chrome,firefox,IE等都支持该协议。常见的服务器如Apache,Nginx,IIS同样支持gzip。

下面就以Vue项目为例,介绍一下gzip的使用(vue-cli 2.*)

1、在/config/index.js中,修改配置开启gzip

// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: true,
productionGzipExtensions: ['js', 'css'],

在修改productionGzip的默认值(false)为true之前,先安装所需的依赖npm install --save-dev compression-webpack-plugin

如果按上述操作完成后,打包时出错,建议更换低版本的compression-webpack-plugin,推荐使用1.1.12或者1.1.11版本等
npm uninstall --save-dev compression-webpack-plugin
npm install --save-dev compression-webpack-plugin@1.1.12

2、在nginx中开启gzip,/nginx/conf/nginx.conf中添加gzip配置

http:{ #启用或禁用gzipping响应。#gzip on; #设置用于压缩响应的缓冲区number和size。默认情况下,缓冲区大小等于一个内存页面。这是4K或8K,具体取决于平台。#gzip_static on;#启用或禁用gzipping响应。#gzip_buffers 4 16k;#设置level响应的gzip压缩。可接受的值范围为1到9。#gzip_comp_level 5;#设置将被gzip压缩的响应的最小长度。长度仅由“Content-Length”响应头字段确定。#gzip_min_length 100;#匹配MIME类型进行压缩,text/html默认被压缩。#gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}

修改完nginx配置,重启服务。

关于gzip详细的配置和描述,请查阅 Module ngx_http_gzip_module

至此,gzip已开启。你可以运行你的项目去检测一下。

打开Chrome控制台,可以看到Network下的Response Headers中返回了Content-Encoding: gzip,表明gzip开启成功。
Request Headers里面的Accept-Encoding: gzip只是表示前端(用户浏览器)支持gzip的压缩方式。

服务器支持gzip的方式可以有两种:
1、打包的时候生成对应的.gz文件,浏览器请求xx.js时,服务器返回对应的xxx.js.gz文件
2、浏览器请求xx.js时,服务器对xx.js进行gzip压缩后传输给浏览器


http://lihuaxi.xjx100.cn/news/268362.html

相关文章

Ubuntu系统中mongodb的安装

mongodb的安装 以ubuntu18.04为例 mongodb具有两种安装方式:命令安装 或 源码安装 1.1 命令安装 在ubuntu中使用apt-get工具安装 sudo apt-get install -y mongodb-org 【安装的为最新版本】【-y也可以去掉,执行后还会提示进行选则】或参考官方文档…

我对计算机的看法英语作文,我对网络的看法英语作文

我对网络的看法英语作文Internet may have been one of the most influential but disputable existences in the world, ever since its first appearance in the late 1960s. Internet has accelerated the world’s development with an incredible speed; nevertheless, it…

最全综述 | 图像目标检测

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达前言 图片分类任务我们已经熟悉了,就是算法对其中的对象进行分类。而今天我们要了解构建神经网络的另一个问题,即目标检测问题。这意味着&#xff…

终于申请博客了

今天终于下定决心在51CTO博客安家了。以后要坚持不断的写博客。以此来督促自己不断的学习和总结。把自己所掌握的技术和过往经验总结出来。转载于:https://blog.51cto.com/weijishui/971044

我在攻克机器学习硕士学位的那些年

编者按:人工智能发展日趋成熟,也成为众多开发者职业生涯的首选方向。然而相较于其他领域,人工智能中的深度学习、机器学习、计算视觉、神经网络等技术更为错综复杂,进修难度也更胜一筹。对此,对于入门和想要进阶的学生…

海思的ko部署

首先将sdk中的ko文件部署到板子上然后在vi /etc/init.d/rcS 中执行cd /ko ./load3536 -i 这个load3536是一个脚本文件,是执行insmod驱动的 注:vi打开load3536 其中有 mem_total2048; # 1024M, total mem mem_start0x40000000; # phy mem start os_mem_…

【特效】移入显示移出隐藏

移入显示移出隐藏的效果也是很常见的,例如: 如果页面有有多处地方有此效果,那么也可以合并到一块,只写一段js代码,只要注意控制样式和class名字和用于js获取元素的class名字分开设置就可以了。代码很简单,用…

使用Vscode进行远程炼丹

使用pycharm的痛苦 作为一个机器学习爱好者,总是梦想有一台四个2080Ti显卡的主机进行炼丹,但是在公司基本只给一个笔记本,台式机在身边进行炼丹是一种奢望,那么如何链接远程的服务器进行炼丹呢? 刚开始我用pycharm进行…