vite打包優(yōu)化vite-plugin-compression的使用示例詳解
什么是gzip 壓縮
當(dāng)前端資源過(guò)大時(shí),服務(wù)器請(qǐng)求資源會(huì)比較慢。前端可以將資源通過(guò)Gzip壓縮使文件體積減少大概60%左右,壓縮后的文件,通過(guò)后端簡(jiǎn)單處理,瀏覽器可以將其正常解析出來(lái)。
如果瀏覽器的請(qǐng)求頭中包含c ontent-encoding: gzip,即證明瀏覽器支持該屬性。

gzip的使用
前端壓縮
前端使用gzip壓縮代碼很容易,通過(guò)插件即可。
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, // 對(duì)超過(guò)10k的數(shù)據(jù)壓縮
minRatio: 0.8 // 壓縮率小于0.8才會(huì)壓縮
}),
]
}vite中使用vite-plugin-compression插件
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
plugins:[
viteCompression()
]
})瀏覽器解析
壓縮的代碼放到服務(wù)器后,需要后端配置一些東西,瀏覽器才可以解析
1、Nginx服務(wù)器只需要配置:
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
插件打包對(duì)比
我們著重介紹下改插件的使用。如果我們項(xiàng)目中不配置此插件,打包后的項(xiàng)目資源如下:

配置此插件后:
import { defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
plugins:[
viteCompression()
]
})通過(guò)打包結(jié)果,我們看出部分文件進(jìn)行了gzip壓縮。

配置項(xiàng)
| 可配置項(xiàng)名稱 | 數(shù)據(jù)類型 | 默認(rèn)值 | 釋義 |
|---|---|---|---|
| verbose | boolean | true | 是否在控制臺(tái)中輸出壓縮結(jié)果 |
| filter | RegExp or (file: string) => boolean | /.(js | mjs |
| disable | boolean | false | 是否禁用 |
| threshold | number | 1025 | 如果體積大于閾值,則進(jìn)行壓縮,單位為b |
| algorithm | string | gzip | 壓縮算法,可選[‘gzip’,‘brotliCompress’,‘deflate’,‘deflateRaw’] |
| ext | string | .gz | 生成的壓縮包的后綴 |
| compressionOptions | object | - | 對(duì)應(yīng)壓縮算法的參數(shù) |
| deleteOriginFile | boolean | - | 壓縮后是否刪除源文件 |
我們簡(jiǎn)單配置下試試
import { defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
plugins:[
viteCompression(
{
algorithm: 'gzip',
threshold: 10240,
verbose: false,
deleteOriginFile: true
}
)
]
})這個(gè)配置項(xiàng),我們通過(guò)algorithm指定了壓縮算法為gzip;通過(guò)threshold指定文件大于10240b(10kb)時(shí)才壓縮文件;通過(guò)verbose禁止在控制臺(tái)輸出壓縮結(jié)果;通過(guò)deleteOriginFile指定壓縮完文件后刪除源文件。

大家可以根據(jù)自己的需求配置。
到此這篇關(guān)于vite打包優(yōu)化vite-plugin-compression的使用的文章就介紹到這了,更多相關(guān)vite打包優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼
- Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動(dòng)導(dǎo)入
- 3分鐘搞定vite項(xiàng)目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用
- vue3項(xiàng)目導(dǎo)入異常Error:@vitejs/PLUGIN-vue?requires?vue?(>=3.2.13)解決辦法
- vue3+vite使用vite-plugin-svg-icons插件顯示本地svg圖標(biāo)的方法
- Vite處理html模板插件之vite-plugin-html插件使用
- 解決vue3+vite配置unplugin-vue-component找不到Vant組件
- vue3+vite多項(xiàng)目多模塊打包(基于vite-plugin-html插件)
- 在?Vite項(xiàng)目中使用插件?@rollup/plugin-inject?注入全局?jQuery的過(guò)程詳解
- vue3+vite引入插件unplugin-auto-import的方法
- Vite Plugin 開發(fā)完全指南
相關(guān)文章
關(guān)于JavaScript數(shù)組你所不知道的3件事
這篇文章主要為大家詳細(xì)介紹了關(guān)于JavaScript數(shù)組三個(gè)并不那么常見(jiàn)的功能,你所不知道的事情,感興趣的小伙伴們可以參考一下2016-08-08
TensorFlow.js 微信小程序插件開始支持模型緩存的方法
這篇文章主要介紹了TensorFlow.js 微信小程序插件開始支持模型緩存的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
前端項(xiàng)目npm?install?安裝依賴報(bào)錯(cuò)的解決方案(三種問(wèn)題解決方案)
本文給大家介紹前端項(xiàng)目npm?install?安裝依賴報(bào)錯(cuò)的解決方案(三種問(wèn)題解決方案),給大家總結(jié)了前端項(xiàng)目安裝依賴,遇到過(guò)的問(wèn)題,每一種問(wèn)題給大家完美解決方案,感興趣的朋友一起看看吧2023-12-12
BootStrap select2 動(dòng)態(tài)改變值的方法
這篇文章主要介紹了BootStrap select2 動(dòng)態(tài)改變值的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
js中用事實(shí)證明cssText性能高的問(wèn)題
首先要感謝 EtherDream 的不同觀點(diǎn),在 巧用cssText屬性批量操作樣式 一篇中由于他的質(zhì)疑態(tài)度使我做了進(jìn)一步的測(cè)試。2011-03-03
關(guān)于微信jssdk實(shí)現(xiàn)多圖片上傳的一點(diǎn)心得分享
這篇文章主要介紹了關(guān)于微信jssdk實(shí)現(xiàn)多圖片上傳的一點(diǎn)心得分享,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
javascript 變態(tài)的節(jié)點(diǎn)集合
今天想實(shí)現(xiàn)jQuery的unwrap效果,換言之,就是用其孩子把其父節(jié)點(diǎn)干掉。為了效率,用到文檔碎片,而取孩子時(shí)使用到childNodes(返回一個(gè)nodeList)2010-03-03

