1. 清除瀏覽器緩存
2. 打開首頁
3. app.js 跟 chunk-vendors.js 超過1M,請求狀態200,超過20秒
4. 如果請求狀態返回304 Not Modifyed,表示加載瀏覽器緩存的數據
5. 優化這個20秒:
步驟一:更改路由
推薦:使用懶加載的方式: 'Element': (resolve) => require(['@/views/sys/element'],resolve)
不使用懶加載的方式:'Analysis': () => import('@/views/dashboard/Analysis')
步驟二:使用gzip壓縮
參考文檔:https://www.css88.com/doc/webpack2/plugins/compression-webpack-plugin/
安裝命令: yarn add compression-webpack-plugin@5.0.1
注意:如果你這里直接不加@5.0.1版本進行安裝,有可能編譯的時候會出現異常:Cannot read property 'tapPromise' of undefined 原因是webpack的包版本不兼容
更改vue.config.js文件:
const CompressionPlugin = require('compression-webpack-plugin') const vueConfig = { configureWebpack: { // webpack plugins plugins: [ //提供帶 Content-Encoding 編碼的壓縮版的資源 new CompressionPlugin({ algorithm: 'gzip', test: /\.js$|\.html$|\.css/,// 匹配文件名 // test: /\.(js|css)$/, threshold: 10240, // 對超過10k的數據壓縮 deleteOriginalAssets: false, // 不刪除源文件 minRatio: 0.8 // 壓縮比 }), ]
步驟三:map文件的作用在於:項目打包后,代碼都是經過壓縮加密的,不能debugger
更改vue.config.js文件:
productionSourceMap: false
打包結果:

本地運行結果:

最后Nginx配置中http{ 下面開啟gzip壓縮:
#開啟gzip
gzip on;
#gzip 設置需要壓縮的MIME類型,如果不在設置類型范圍內的請求不進行壓縮
#gzip 設置需要壓縮的MIME類型,如果不在設置類型范圍內的請求不進行壓縮
gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
記住執行刷新nginx配置: