gzip is a single-file/stream lossless data compression utility, where the resulting compressed file generally has the suffix .gz.
gzip also refers to the associated compressed data format used by the utility.
// permission
sudo npm install -g serve
# -s flag means serve it in Single-Page Application mode
# which deals with the routing problem below
serve -s dist
什么是gzip
gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。在gzip官网中我们还能看到这么一句话,指gzip是一个单文件/流的无损压缩,当然你也可以指定如何压缩。
gzip可以将文件体积压缩,减少占用资源和http请求的时间,这两点也是gzip压缩技术能出现在前端视野的重要原因。
浏览器如何解析
.gz
文件只要浏览器支持
Content-Encoding: gzip
就可以,基本现代浏览器都支持如何生成
gz
文件我们这里主要使用
vue-cli 3.x
来进行本文的功能验证,对应的webpack
插件为compression-webpack-plugin
,首先我们安装依赖:然后我们根据CLI官方推荐新建一个
vue.config.js
使用webpackChain
链式添加相关的plugin
配置(相关配置文档):配置好了后,我们
npm run build
生成dist
目录,在控制台中可以清楚的看到两种打包文件体积大小的对比: 我们打开本地目录查看一下打包的文件,可以看到css
文件都生成了一个.gz
副本,相应的js
也一样,这里我们的压缩是生效的接着我们使用CLI自带的
serve
命令进行本地预览(相关文档),如果你没有安装,你需要按照文档简单安装一下:这里支持
gzip
浏览器会默认请求.gz
文件,不支持的返回未压缩的对应的文件类型,然后打开浏览器network
,对.gz
文件请求进行验证,这里选取elementUi
的chunk
进行验证:这里可以看到大小为
gz
文件,打开请求详情可以看到请求头