Vue使用CDN以及Gzip壓縮整合

最近在用VueCli4版本寫(xiě)自己的網(wǎng)站患亿,想要重新復(fù)習(xí)一下之前的知識(shí)內(nèi)容慌核,順帶給我自己已經(jīng)放了兩年都沒(méi)怎么用的服務(wù)器放一下自己的網(wǎng)站。但是我發(fā)現(xiàn)央拖,在進(jìn)行項(xiàng)目打包后祭阀,vendors文件還是比較大鹉戚,導(dǎo)致在我小小服務(wù)器上面首屏顯示會(huì)特別的慢。

  • 于是我開(kāi)始著手進(jìn)行項(xiàng)目的優(yōu)化柬讨,首先的話就是想到了CDN引入崩瓤。在VueCli3以上的版本配置的話都是需要新建一個(gè)vue.config.js的,然后在內(nèi)部進(jìn)行具體內(nèi)容的實(shí)現(xiàn)踩官。
module.exports = {
configureWebpack: {
    externals: {
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'element-ui': 'ELEMENT',
      'axios': 'axios',
      'vuex': 'Vuex',
      'moment':'moment',
      'highlight':'highlight'
    },
  }
}
  • 在這里我用CDN引入了Vue却桶、Vue-router、element-ui蔗牡、axios颖系、Vuex、moment辩越、highlight(該插件為富文本高亮插件嘁扼,我用的vue-quill-editor富文本編輯器,但是不知道如何CDN引入也沒(méi)有找到CDN黔攒,有知道的大佬希望指教一下趁啸。)

  • 配置過(guò)vue.config.js之后還需要在public中的index中,使用CDN引入對(duì)應(yīng)的JS文件以及CSS文件督惰。(此處部分內(nèi)容依賴(lài)VueJS所以需要先引入Vuejs)

//index.html
<link  rel="stylesheet">
<link  rel="stylesheet">
 .......
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/vuex/3.2.0/vuex.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.27.0/locale/zh-cn.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/index.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/vue-lazyload/1.3.3/vue-lazyload.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/highlight.js/10.1.1/highlight.min.js"></script>
  • 在引入CDN之后不傅,我們還需要在main.js中使用這些CDN
const Vue = require('vue')
//語(yǔ)法高亮
const hljs = require('highlight.js')
// 懶加載
const VueLazyLoad = require('vue-lazyload')
// 時(shí)間函數(shù)
const moment = require('moment')
Vue.use(axios)
Vue.use(VueAxios)
Vue.use(VueLazyLoad,{
  loading:'/loading-svg/loading-bars.svg'
})
  • 感覺(jué)沒(méi)有什么兩樣,在最開(kāi)始赏胚,我在查詢(xún)相關(guān)資料的時(shí)候访娶,有人說(shuō)也可以使用以下的方式來(lái)進(jìn)行引用,無(wú)需進(jìn)行require
/* global Vue */ 
以該方式進(jìn)行引入觉阅,這樣的方式可以省去require的過(guò)程崖疤。
目前萌新的我還是有待探索,有知道的大佬希望可以賜教典勇,感激感激感激劫哼!
  • 這樣的話我們就可以進(jìn)行build了,我用的yarn所以是yarn build痴柔。在打包的時(shí)候可以使用一個(gè)參數(shù) --report 該參數(shù)可以生成一個(gè)html文件沦偎,讓打包的用戶看到自己在打包過(guò)程中,哪些資源占用情況咳蔚。具體如下圖所示豪嚎。


    build
  • 除此打包以外,還有就是剛才說(shuō)到的--report的一個(gè)使用會(huì)生成report的html文件谈火,具體占用如下圖所示侈询,希望大佬指正,感謝感謝感謝糯耍。


    report
  • 可以看到圖片扔字,其實(shí)是已經(jīng)沒(méi)有Vue囊嘉、Vue-router、以及element-ui這些內(nèi)容了革为,只有就是我目前不清楚具體如何優(yōu)化的quilljs以及highlight扭粱。放在我的服務(wù)器上還是會(huì)很慢很慢,于是我注意到了我打包的時(shí)候右方顯示的Gzipped震檩,它的大小是正常情況下的四分之一了應(yīng)該琢蛤。
  • 說(shuō)做就做,于是查看相關(guān)gzip的信息抛虏。(可是我剛才看到那個(gè)貼子之后發(fā)現(xiàn)也查不到了博其,如果原作者看到貼的代碼出自您的話可以聯(lián)系我給地址貼上去。抱歉抱歉)
plugins: [
      new CompressionWebpackPlugin({
          filename: '[path].gzip[query]',   // 提示compression-webpack-plugin@2.0.0的話filename改為asset
          algorithm: 'gzip',
          test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
          threshold: 10240, //內(nèi)容超過(guò)10KB進(jìn)行壓縮
          minRatio: 0.8
      })
    ],
  • 同樣都是放在configureWebpack下的迂猴。配置如上所示慕淡。有需要的大佬們可以看一下,有錯(cuò)誤希望指正沸毁,感謝峰髓!
asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  js/chunk-vendors.12ccee18.js (855 KiB)
  js/chunk-vendors.12ccee18.js.gzip (283 KiB)

 warning  

entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB)
. This can impact web performance.
Entrypoints:
  app (867 KiB)
      js/chunk-vendors.12ccee18.js
      css/app.1882e4d6.css
      js/app.93e052ca.js
  • 在打包過(guò)程中也可能會(huì)出現(xiàn)如下的情況,所以可以再添加如下的配置便可以解決該問(wèn)題息尺。
performance:{
        hints:'warning',
            //入口起點(diǎn)的最大體積
            maxEntrypointSize: 50000000,
            //生成文件的最大體積
            maxAssetSize: 30000000,
    }
  • 這樣我們配置完成了Vue的Gzip壓縮儿普,我們嘗試壓縮一下看一下。


    gzip
  • 如圖所示掷倔,Gzip壓縮后的內(nèi)容確實(shí)會(huì)比原來(lái)的內(nèi)容小很多,這樣的話也從側(cè)面提升了首頁(yè)渲染以及加載的性能个绍。我們接下來(lái)放入服務(wù)器中勒葱。


    request
  • 起初只是在request中看到了gzip,但是response還是看不到巴柿,所以需要配置nginx的gzip壓縮凛虽,如下所示。
    gzip  on;
    gzip_min_length 1k;
    gzip_comp_level 5;
    #   # 進(jìn)行壓縮的文件類(lèi)型广恢。;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;     
    #是否在http header中添加Vary: Accept-Encodin;
    gzip_vary on;
    # 設(shè)置壓縮所需要的緩沖區(qū)大小凯旋,以4k為單位,如果文件為7k則申請(qǐng)2*4k的緩沖區(qū);
    gzip_buffers 2 4k;
  • 配置完成之后進(jìn)入nginx的sbin目錄钉迷,進(jìn)行./nginx -reload 重啟至非。
    重啟之后我們?cè)俅螄L試打開(kāi)網(wǎng)頁(yè)看一下。


    yes!
  • 成功啦糠聪,這次的是response返回的內(nèi)容荒椭,并且以往需要7s時(shí)間加載的文件,本次只需要2s就加載完成了(雖然還是很慢很痛苦舰蟆,如果有大佬有更好的方法趣惠,感謝感謝賜教狸棍。)


    vendors

    以上就是本次CDN優(yōu)化以及Gzip壓縮的具體內(nèi)容了,希望對(duì)觀看的各位有所幫助味悄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末草戈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侍瑟,更是在濱河造成了極大的恐慌唐片,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丢习,死亡現(xiàn)場(chǎng)離奇詭異牵触,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咐低,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)揽思,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人见擦,你說(shuō)我怎么就攤上這事钉汗。” “怎么了鲤屡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵损痰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我酒来,道長(zhǎng)卢未,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任堰汉,我火速辦了婚禮辽社,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翘鸭。我一直安慰自己滴铅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布就乓。 她就那樣靜靜地躺著汉匙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪生蚁。 梳的紋絲不亂的頭發(fā)上噩翠,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音守伸,去河邊找鬼绎秒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尼摹,可吹牛的內(nèi)容都是我干的见芹。 我是一名探鬼主播剂娄,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼玄呛!你這毒婦竟也來(lái)了阅懦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徘铝,失蹤者是張志新(化名)和其女友劉穎耳胎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惕它,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怕午,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淹魄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郁惜。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖甲锡,靈堂內(nèi)的尸體忽然破棺而出兆蕉,到底是詐尸還是另有隱情,我是刑警寧澤缤沦,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布虎韵,位于F島的核電站,受9級(jí)特大地震影響缸废,放射性物質(zhì)發(fā)生泄漏包蓝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一企量、第九天 我趴在偏房一處隱蔽的房頂上張望养晋。 院中可真熱鬧,春花似錦梁钾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冒嫡,卻和暖如春拇勃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孝凌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工方咆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蟀架。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓瓣赂,卻偏偏與公主長(zhǎng)得像榆骚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煌集,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350