vite打包优化vite-plugin-compression的使用

简介: 【8月更文挑战第4天】vite打包优化vite-plugin-compression的使用

什么是gzip 压缩

当前端资源过大时,服务器请求资源会比较慢。前端可以将资源通过Gzip压缩使文件体积减少大概60%左右,压缩后的文件,通过后端简单处理,浏览器可以将其正常解析出来。

如果浏览器的请求头中包含content-encoding: gzip,即证明浏览器支持该属性。
image.png

gzip的使用

前端压缩

前端使用gzip压缩代码很容易,通过插件即可。
vue-cli中使用compression-webpack-plugin插件

const compressionWebpackPlugin = require("compression-webpack-plugin");
module.exports = {
   
   
  configureWebpack: {
   
   
    plugins: [
      // 开启gzip
      new compressionWebpackPlugin({
   
   
        filename: "[path][base].gz",
        algorithm: "gzip",
        test: /\.js$|\.css$|\.html$/,
        threshold: 10240, // 对超过10k的数据压缩
        minRatio: 0.8 // 压缩率小于0.8才会压缩
      }),
        ]
}

vite中使用vite-plugin-compression插件

import viteCompression from 'vite-plugin-compression'
export default defineConfig({
   
   
  plugins:[
    viteCompression()
  ]
})

浏览器解析

压缩的代码放到服务器后,需要后端配置一些东西,浏览器才可以解析
1、Nginx服务器只需要配置:
2、nodejs启用gzip以express框架为例:

npm install compression 
npm install @types/compression --save-dev
import compression from 'compression';
...
const app = express();
app.use(compression());
...

compression-webpack-plugin

插件打包对比

我们着重介绍下改插件的使用。如果我们项目中不配置此插件,打包后的项目资源如下:
image.png
配置此插件后:

import {
   
    defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
   
   
  plugins:[
    viteCompression()
  ]
})

通过打包结果,我们看出部分文件进行了gzip压缩。
image.png

配置项

可配置项名称 数据类型 默认值 释义
verbose boolean true 是否在控制台中输出压缩结果
filter RegExp or (file: string) => boolean /\.(js|mjs|json|css|html)$/i 指定哪些资源不被压缩
disable boolean false 是否禁用
threshold number 1025 如果体积大于阈值,则进行压缩,单位为b
algorithm string gzip 压缩算法,可选['gzip','brotliCompress','deflate','deflateRaw']
ext string .gz 生成的压缩包的后缀
compressionOptions object - 对应压缩算法的参数
deleteOriginFile boolean - 压缩后是否删除源文件

我们简单配置下试试

import {
   
    defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
   
   
  plugins:[
    viteCompression(
      {
   
   
        algorithm: 'gzip',
        threshold: 10240,
        verbose: false,
        deleteOriginFile: true
      }
    )
  ]
})

这个配置项,我们通过algorithm指定了压缩算法为gzip;通过threshold指定文件大于10240b(10kb)时才压缩文件;通过verbose禁止在控制台输出压缩结果;通过deleteOriginFile指定压缩完文件后删除源文件。
image.png
大家可以根据自己的需求配置。

相关文章
|
20天前
|
JavaScript 前端开发
将 Babel 插件应用于实际项目中
【10月更文挑战第25天】如果在应用插件过程中出现问题,可以检查 Babel 配置是否正确、插件的依赖是否安装完整、构建工具的集成是否正确等,逐步排查和解决问题。通过以上步骤,就可以将 Babel 插件成功应用到实际项目中,实现特定的代码转换和功能增强。
|
2月前
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
本文讨论了在配置Vite项目时遇到的`vite.defineConfig is not defined`错误,这通常是由于缺少必要的导入语句导致的。文章还涉及了如何创建最新版本的Vite项目以及如何处理`configEnv is not defined`的问题。
111 3
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
|
6月前
|
JavaScript 前端开发 API
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(下)
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(下)
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(下)
|
6月前
|
JSON JavaScript 前端开发
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(上)
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(上)
轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(上)
|
Web App开发 XML 资源调度
Vue 打包 chunk-vendors.js 文件过大解决方案(compression-webpack-plugin)
Vue 打包 chunk-vendors.js 文件过大解决方案(compression-webpack-plugin)
859 1
|
缓存 JavaScript CDN
关于vite打包优化,你了解多少
关于vite打包优化,你了解多少
|
Web App开发 缓存 前端开发
|
前端开发
关于我写了一个vite插件那些事
在我们开发的过程中有开发模式和生产模式,那有些测试代码会在开发模式的时候使用,在生产环境要删掉,一般是手动删除,另一种就是判断环境变量,但是环境变量不好处理template代码以及css代码,为此我写了一个插件将解决以上问题。
217 0
关于我写了一个vite插件那些事
Vite:rollup-plugin-visualizer查看打包体积分析report报告
Vite:rollup-plugin-visualizer查看打包体积分析report报告
1467 0
Vite:rollup-plugin-visualizer查看打包体积分析report报告
|
缓存 Rust 前端开发
esbuild + swc 能有多快?
前端工具层出不穷,之前有常用的打包工具webpack,现在有了速度更快的vite。 vite的开发模式是基于esBuild编译的,打包又是基于rollup,启动项目是很快的。
795 0
esbuild + swc 能有多快?