Vue優化首屏加載


背景:

使用vue + iview搭建的一個后台管理系統,路由已經用了懶加載,加載登陸頁面,居然還是需要18S左右,剛到一個新公司,項目經理很委婉的說,看看能不能優化了一下。然后就開始了網上一大堆'vue首屏加載'的搜索...
經過初步優化,終於加載從開始的15S多到現在的不到4S,且看一步一步來...

性能測試工具: Pingdom

https://tools.pingdom.com/


優化具體做法:

項目可能因情況而定,未做優化之前,我的加載情況是這樣的:

很顯然:加載時間最耗時的是背景圖片,vendor.js和app.js過大。



步驟一:優化圖片

整個屏幕的背景圖片,PNG格式會很大,自己用PS改成了jpg格式,居然只有45KB,其實改了之后,畫質差別真的不大,但是時間會少了很多

從兩張圖對比得知,一個圖的優化,直接可以減少5S的下載時間。



步驟二:讓后台開啟gzip:

一般情況下,性能能提高30% -- 80% 左右

目前不支持圖片和字體的壓縮

可以從圖中明顯看到:vendor.js直接哦才能夠940KB,縮小到了700KB,app.js從327KB縮小到了228KB,大小減少接近1/3。

補充:gzip_static 生效的前提是nginx開啟了gzip_static壓縮並且請求目錄下存在名稱相同且以.gz 結尾的文件。

使用 gzip_static 壓縮的話要先准備好壓縮后的 gz 文件,並且服務器會消耗更多的空間來存儲壓縮文件和原文件,這個有利有弊要自己衡量。



步驟三:使用CDN加載資源

在vue項目中,通過npm安裝到工程中所有的js,css文件,在編譯時都會被打包進vendor.js,瀏覽器在加載該文件后才開始顯示首屏。

我們先來試試更換Vue,vue-router的加載方式,先看結果

從結果看出,當Vue,vue-router從CDN加載時,vendor.js直接又少了111KB。然后按照這種方法,axios,iview我也只用CDN方式加載



代碼只需要改動的地方:
1),index.html加載CDN資源 :



2),公共配置項webpack.base.conf.js:

按照官方文檔的解釋,如果我們想引用一個庫,但是又不想讓webpack打包,並且又不影響我們在程序中以CMD、AMD或者window/global全局等方式進行使用,那就可以通過配置externals。具體自行百度。。。



##### 3),跟改vue,vue-router,axios,iview的引入方式:

main.js中 注釋掉
// import Vue from 'vue',
// import iView from 'iview';
// import '../theme/index.less';
其他的一切照舊,照樣可以使用Vue.use()

vue-router和axios中是一樣的

到此,去看加載請情況



最后附上結果



最后解答幾個問題,是我在網上看到別人問的

1,使用CDN方式加載vue-router , 懶加載一樣可以,且不需要改動任何東西,以前是懶加載,優化之后依然是

2,ivew使用變量覆蓋方式更換主題就不行了,要嘗試另外一種安裝工具修改

3,一個小提示,每次更改了webpack文件中的配置后,別忘了重新npm start


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM