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
大家可以根据自己的需求配置。

相关文章
vue3+vite项目中使用svg图标
vue3+vite项目中使用svg图标
2425 1
vite环境引入web worker方法
在 vite 环境中使用 web worker 时,如果遇到生产环境中 worker.js 文件的 MIME 类型被识别为 text/html,导致报错无法运行的情况时,可以参考以下两种方法,原理都是避免编译时产出单独的 worker.js 文件。方法一worker文件不需要包装,引入时后缀增加 ?worker&inline,使用时直接 new ImportedWorker();self.
1977 1
Vue3】vite打包报错:块的大小超过限制,Some chunks are larger than 500kb after minification
Vue3】vite打包报错:块的大小超过限制,Some chunks are larger than 500kb after minification
3479 0
|
11月前
|
缓存 前端开发 JavaScript
如何配置Vite以确保最佳的Tree Shaking效果?
如何配置Vite以确保最佳的Tree Shaking效果?
1453 57
|
存储 资源调度
在 Pinia 中如何实现状态持久化?
在 Pinia 中如何实现状态持久化?
3348 57
|
缓存 前端开发 JavaScript
Vite 打包优化:全面解析与实践
Vite 作为新一代前端构建工具,以其快速开发体验和高效打包能力著称。然而,在实际项目开发中,为了进一步提升性能和用户体验,我们仍需对 Vite 打包进行优化。本文将深入探讨 Vite 打包优化策略,涵盖代码拆分、资源压缩、缓存利用、构建配置等多个方面,并提供实践案例和最佳实践建议,帮助开发者充分释放 Vite 的潜力。
3403 1
|
JavaScript 前端开发 API
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
本文介绍了如何在Vue 3项目中使用v-md-editor组件库来创建markdown编辑器和预览组件。文章提供了安装步骤、如何在main.js中进行全局配置、以及如何在页面中使用VMdEditor和VMdPreview组件的示例代码。此外,还提供了一个完整示例的链接,包括编辑器和预览组件的使用效果和代码。
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
|
前端开发 JavaScript
vite中css最佳实践:使用postcss完善项目中的css配置
【8月更文挑战第3天】使用postcss完善项目中的css配置
4132 1
|
JavaScript 前端开发 开发者
太爽了!这10个 Vite 插件,帮我在开发中节省了大量时间!!
太爽了!这10个 Vite 插件,帮我在开发中节省了大量时间!!
|
前端开发 JavaScript 安全
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第7天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤。包括项目准备、安装 `javascript-obfuscator`、配置 Vite 构建以应用混淆,以及最终构建项目进行混淆。通过这些步骤,可以有效提升前端代码的安全性,防止被他人轻易分析和盗用。
3316 0