【前端优化】compression-webpack-plugin资源压缩

前端优化之文本资源压缩

基于文本的资源应进行压缩,以尽量减少网络总字节数

  • 当浏览器请求资源时,它将使用
    Accept-Encoding HTTP 请求标头来指示它支持哪些压缩算法。
Accept-Encoding: gzip, compress, br

兼容性:
Brotli (br):不兼容Internet Explorer、Safari 桌面版和 iOS 上的 Safari
GZIP:所有主流浏览器都支持 GZIP,但效率不如 Brotli

  • 服务器应返回 Content-Encoding HTTP 响应标头以指示它使用的压缩算法。
    Content-Encoding: br

前端使用compression-webpack-plugin开启Gzip压缩

安装

 npm install compression-webpack-plugin --save-dev

配置

//vue.config.js
const { defineConfig } = require('@vue/cli-service')
// 导入compression-webpack-plugin:压缩资源,生成.gz文件
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 定义压缩文件类型
const productionGzipExtensions = ['js', 'css']
//...其他配置
module.exports = defineConfig({
    //.....其他配置
    configureWebpack:{
        //...其他配置
        //找到plugin,添加插件
        plugins: [
          new CompressionWebpackPlugin({
            filename: '[path][base].gz',//[file] 会被替换成原始资源。[path] 会被替换成原始资源的路径, [query] 会被替换成查询字符串
            algorithm: 'gzip',//压缩成gzip
            //所有匹配该正则的资源都会被处理。默认值是全部资源。
            test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
            threshold: 10240,//只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。
            minRatio: 0.8//只有压缩率小于这个值的资源才会被处理。默认值是 0.8。
          })
        ]
    }
})

打包

可以发现生成了许多“.gz”格式的文件,这些文件就是压缩后的
在这里插入图片描述

服务端配置

生成压缩后的文件,不能直接使用,需要服务端配置才可以使用,而且发现打包生成的“dist/index.html”首页内,也没有直接引用这些“.gz”格式的文件。
而实现的关键,其实就是让服务端向浏览器发送“Content-Encoding=gzip”这个响应头,并把对应的“.gz”格式文件发送给浏览器,让浏览器通过“gzip”编码格式来解析资源。

nginx实现(nginx.conf)

在http模块内配置“gzip_static on”即可。

http {
 gzip_static on;
}

发布

访问时,可看到 请求 和 回复 里都带有gzip标记
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值