webpack插件compression-webpack-plugin配合nginx进行gzip压缩,提高http请求速度
程序员文章站
2024-03-12 23:51:56
...
背景:
gzip是一种文件压缩格式,浏览器可以自动解压这种格式,服务器返回的是gzip的格式文件时,response的头部会有
Content-Encoding: gzip 这样的头部告诉浏览器:“我返回的是gzip格式文件,你要用对应的方法去解压它”
方式:
有两种方式可以让服务器返回的资源是gzip压缩文件:
一、在服务器端开启压缩http请求的目标文件,比如nginx(我只会nginx),在nginx的配置文件里开启下面的配置,当http请求资源的时候,服务器就会将资源压缩后再传输给浏览器。但是这是要消耗cpu资源的。
gzip:on
二、第二种方式预先将资源压缩成gzip格式,再放入服务器里。前端使用webapck的插件compression-webpack-plugin来在打包时压缩文件 。了解 compression-webpack-plugin
npm install compression-webpack-plugin --save-dev
在webpack的plugins里配置:
new CompressionWebpackPlugin({
filename: '[path].gz[query]', //压缩后的文件名
algorithm: 'gzip’, // 压缩格式 有:gzip、brotliCompress、
test: /\.(js|css|svg)$/,
threshold: 10240,// 只处理比这个值大的资源,按字节算
minRatio: 0.8, //只有压缩率比这个值小的文件才会被处理,压缩率=压缩大小/原始大小,如果压缩后和原始文件大小没有太大区别,就不用压缩
deleteOriginalAssets: false //是否删除原文件,最好不删除,服务器会自动优先返回同名的.gzip资源,如果找不到还可以拿原始文件
})
然后执行打包命令,压缩后的文件都有.gzip的后缀。
同时nginx也要加上下面的配置,这是让nginx根据http请求优先返回gzip的文件。
gzip_static: on
根据第二种方式, 服务器就不必消耗cpu来压缩资源了。
压缩前的大小792KB:
压缩后的大小217KB: