Vue項目打包后js文件過大的問題解決辦法
前言
頁面加載的時候,時間過于緩慢,通過Chrome的F12性能調(diào)試,發(fā)現(xiàn)主要原因是因為加載的 js 過大而引起的。因為之前已經(jīng)提到了將我們一些組件改成CDN方式引入,例如 Vue、ElementUi、ECharts等。但是還是存在一些打包后的內(nèi)部 js 文件,他們的大小也過于龐大,因此本文將主要講解如何解決Vue項目打包后js文件過大的問題。
引入插件
我們可以通過引入 compression-webpack-plugin 插件,然后開啟 gzip 來解決本問題
首先安裝插件依賴
npm i compression-webpack-plugin@5.0.1
然后修改 config/index.js 文件,把 productionGzip 改為:true
productionGzip: true, productionGzipExtensions: ['js', 'css'],
然后在修改 build/webpack.prod.conf.js 文件,修改如下內(nèi)容
// 判斷配置文件是否開啟了gzip加速 if (config.build.productionGzip) { // 引入壓縮文件的組件,該插件會對生成的文件進(jìn)行壓縮,生成一個.gz文件 const CompressionWebpackPlugin = require('compression-webpack-plugin') webpackConfig.plugins.push( new CompressionWebpackPlugin({ filename: '[path].gz[query]', // 目標(biāo)文件名 algorithm: 'gzip', // 使用gzip壓縮 test: new RegExp( // 滿足正則表達(dá)式的文件會被壓縮 '\\.(' + config.build.productionGzipExtensions.join('|') + ')$' ), threshold: 10240, // 資源大于10240=10KB時會被壓縮 minRatio: 0.8, deleteOriginalAssets: false, // 是否刪除原資源 }) ) }
打包
修改完成后,我們打包項目
npm run build
打包完成后,我們查看 dist目錄,能夠發(fā)現(xiàn)很多 js 文件已經(jīng)被壓縮了
修改Nginx配置
因為我們 Vue 項目打包后,部署的是靜態(tài)文件,因此我們還需要在 nginx 處開啟 gzip, 找到 nginx.conf
# on為啟用,off為關(guān)閉 gzip on; # Nginx的動態(tài)壓縮是對每個請求先壓縮再輸出,這樣造成虛擬機(jī)浪費了很多cpu,解決這個問題可以利用nginx模塊Gzip Precompression,這個模塊的作用是對于需要壓縮的文件,直接讀取已經(jīng)壓縮好的文件(文件名為加.gz),而不是動態(tài)壓縮,對于不支持gzip的請求則讀取原文件 gzip_static on; # 設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進(jìn)行獲取。默認(rèn)值是0,不管頁面多大都壓縮。建議設(shè)置成大于1k的字節(jié)數(shù),小于1k可能會越壓越大。 gzip_min_length 1k; # 獲取多少內(nèi)存用于緩存壓縮結(jié)果,‘4 16k'表示以16k*4為單位獲得 gzip_buffers 4 32k; # 識別http協(xié)議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼 gzip_http_version 1.1; # gzip壓縮比(1~9),越小壓縮效果越差,但是越大處理越慢,所以一般取中間值; gzip_comp_level 2; # 對特定的MIME類型生效,其中'text/html'被系統(tǒng)強(qiáng)制啟用 gzip_types text/plain application/x-javascript text/css application/xml; # 啟用應(yīng)答頭"Vary: Accept-Encoding" gzip_vary on; # IE5.5和IE6 SP1使用msie6參數(shù)來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進(jìn)行匹配),依賴于PCRE庫 gzip_disable "MSIE [1-6].";
設(shè)置完成后,我們重啟 nginx
到這里為止,我們的響應(yīng)時間過于緩慢的問題也得到了解決
總結(jié)
到此這篇關(guān)于Vue項目打包后js文件過大的問題解決辦法的文章就介紹到這了,更多相關(guān)Vue項目打包后js文件過大內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue v-for循環(huán)重復(fù)數(shù)據(jù)無法添加問題解決方法【加track-by=''索引''】
這篇文章主要介紹了vue v-for循環(huán)重復(fù)數(shù)據(jù)無法添加問題解決方法,結(jié)合實例形式分析了vue.js通過在v-for循環(huán)中添加track-by='索引'解決重復(fù)數(shù)據(jù)無法添加問題相關(guān)操作技巧,需要的朋友可以參考下2019-03-03vue組件中節(jié)流函數(shù)的失效的原因和解決方法
這篇文章主要介紹了vue組件中節(jié)流函數(shù)的失效和解決方法,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下2020-12-12vue3.x使用swiperUI動態(tài)加載圖片失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了vue3.x使用swiperUI動態(tài)加載圖片失敗的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問題
這篇文章主要介紹了Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02vue中el-table前端如何導(dǎo)出excel數(shù)據(jù)表格
這篇文章主要介紹了vue中el-table前端如何導(dǎo)出excel數(shù)據(jù)表格,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07關(guān)于json-bigint處理大數(shù)字問題
這篇文章主要介紹了關(guān)于json-bigint處理大數(shù)字問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05vue實現(xiàn)將自己網(wǎng)站(h5鏈接)分享到微信中形成小卡片的超詳細(xì)教程
在微信小程序中,可以很簡單的分享一個頁面,比微信H5簡單多了,下面這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)將自己網(wǎng)站(h5鏈接)分享到微信中形成小卡片的超詳細(xì)教程,需要的朋友可以參考下2023-02-02