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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
echarts實(shí)現(xiàn)3d柱狀圖的2種方式舉例
echarts3D效果柱狀圖的實(shí)現(xiàn),這個(gè)太難了,我花了兩天終于調(diào)成我想要的效果啦,要是官網(wǎng)上有例子就好了,太難調(diào)了,下面這篇文章主要給大家介紹了關(guān)于echarts實(shí)現(xiàn)3d柱狀圖的2種方式,需要的朋友可以參考下2023-02-02在線一元二次方程計(jì)算器實(shí)例(方程計(jì)算器在線計(jì)算)
在線一元二次方程式計(jì)算器實(shí)例分享,大家參考使用吧2013-12-12基于Bootstrap的后臺(tái)管理面板 Bootstrap Metro Dashboard
這篇文章主要介紹了基于Bootstrap的后臺(tái)管理面板:Bootstrap Metro Dashboard,對(duì)Bootstrap的后臺(tái)管理面板感興趣的小伙伴們可以參考一下2016-06-06在JavaScript中使用mqtt.js的詳細(xì)過(guò)程
這篇文章主要介紹了在JavaScript中使用mqtt.js的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04連續(xù)操作HTMLElement對(duì)象圖文解決方法
Object.prototype.***不能用作在HTMLElement對(duì)象上,如本后面的抓圖所示。2008-03-03為非IE瀏覽器添加mouseenter,mouseleave事件的實(shí)現(xiàn)代碼
為非IE瀏覽器添加mouseenter,mouseleave事件的實(shí)現(xiàn)代碼,學(xué)習(xí)js的朋友可以參考下。2011-06-06數(shù)據(jù)分析軟件之FineReport教程:[5]參數(shù)界面JS(全)
表格軟件FineReport在設(shè)計(jì)報(bào)表時(shí)經(jīng)常會(huì)用到,這篇文章主要介紹數(shù)據(jù)分析軟件之FineReport教程:[5]參數(shù)界面JS,需要的朋友可以參考下2015-08-08原生javascript實(shí)現(xiàn)圖片放大鏡效果
這篇文章主要為大家詳細(xì)介紹了原生javascript實(shí)現(xiàn)圖片放大鏡效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01