NUXT項目打包優(yōu)化策略

用nuxt開發(fā)完項目之后,開開心心打包扔上服務器準備收工,卻沒多久坟冲,測試童鞋遺憾的告訴我靠汁,壓測50并發(fā)未通過。what皆疹?好吧疏橄。咱們再接下來老老實實的研究怎么壓縮打包優(yōu)化性能。

性能優(yōu)化略就,無外乎那幾個方案:文件壓縮捎迫,文件緩存,CDN表牢,DNS 預解析窄绒。。初茶。

這里我們首先看一下不加任何優(yōu)化的項目颗祝,打包后的分布:

未優(yōu)化


這里能看到element-ui占了絕大部分的打包空間,是因為全局引入了element-ui恼布,所以即使我們只使用了一部分的elemnt組件螺戳,但仍然把整個element給打包進來了。

所以這里有一個可以優(yōu)化的點:只引入element使用的組件折汞,這樣在打包的時候只需要打包使用的組件倔幼,體積就會減小很多

只引入使用的組件

我們再來看看這么處理之后爽待,我們打包出來的效果:

引入部分elemnet組件后的打包分布

可以看出损同,我們減少了將近400kb的體積,效果十分顯著鸟款。

好了膏燃,我又自信滿滿的把包丟到服務器上,準備金盆洗手何什。??

然鵝沒過多久组哩,運維童鞋發(fā)過來一張圖把我打回原點。

vendor.app.js阻塞了

我看了一下vendor.app.js,足有501kb伶贰,難怪會阻塞???♀?好吧蛛砰,這里應該使用上文件壓縮這桿大槍了。

nuxt本身就是基于webpack的黍衙,正好安裝compression-webpack-plugin來對文件進行壓縮泥畅。

首先安裝npm install?compression-webpack-plugin

然后在nuxt.config.js中:

const CompressionPlugin = require('compression-webpack-plugin');

module.exports={

? ? build: {

? ??????plugins: [

? ? ? ????new CompressionPlugin({

? ? ? ? ????test: /\.js$|\.html$|\.css/, // 匹配文件名

? ? ? ? ????threshold: 10240, // 對超過10kb的數據進行壓縮

? ? ? ? ????deleteOriginalAssets: false // 是否刪除原文件

? ? ? ????})

? ? ????],

????}

}

這樣打包出來的大小雖然沒變,但是點擊.nuxt-dist-client中你會發(fā)現

有gz后綴的文件

觀察發(fā)現gz打包后琅翻,較原來的文件減少了3/4的體積位仁。有了這些gz后綴的文件,再配合nginx打開gzip服務望迎。我想這回應該可以沖過50并發(fā)了吧障癌,說不定200并發(fā)都沒問題??????

好了,我這回真的自信滿滿的把包丟到服務器上辩尊,通知測試童鞋再次壓測涛浙,果不其然,測試童鞋過了一會回復:50并發(fā)跑5次無異常摄欲。????我大氣說轿亮,上100!我翹著得意的二郎腿胸墙,等著好消息再次到來我注。過了一會,果不其然迟隅!測試童鞋告訴我但骨,100并發(fā)阻塞。原因同上智袭,出在了vendor.app.js上??

這里我說一下vendor.app.js打包之后的體積是144kb奔缠。然鵝在高并發(fā)下,表現還是不理想吼野,于是乎我只能上網去到處搜索解決方案校哎,畢竟po主的webpack知識也就那么一勺水的深度???♀????♀?

這里還真讓我找到了一個臺灣的網站,可見參考鏈接第三條瞳步。

splitChunks: 設定 Chunks 的最大和最小 size闷哆。

在nuxt.config.js中加入:

module.exports={

? ? build: {

????????optimization: {

? ? ? ????????splitChunks: {

? ? ? ?????????minSize: 10000,

? ? ? ? ????????maxSize: 250000

? ? ? ????????}

? ? ????},

????}

}

打包,觀察打包結果:

splitChunks之后的打包分析

可以看到雖然包體積雖然沒變单起,但是像vendor.app.js這種單個體積大的被拆分成n個體積小的文件了抱怔。

這回終于是可以突破100并發(fā)5次無異常,達成并發(fā)要求了????????


總結一下嘀倒,其實po主也不是什么webpack大神野蝇,也是摸爬滾打整出來的讼稚,大家如果能有什么更好的優(yōu)化建議或者指教,請多多交流绕沈,不對之處我會改正!


參考:?

Nuxt 項目性能優(yōu)化調研

NUXT項目的性能優(yōu)化

SplitChunks & Lodash & Vuetify tree shaking

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末帮寻,一起剝皮案震驚了整個濱河市乍狐,隨后出現的幾起案子,更是在濱河造成了極大的恐慌固逗,老刑警劉巖浅蚪,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異烫罩,居然都是意外死亡惜傲,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門贝攒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗誊,“玉大人,你說我怎么就攤上這事隘弊」猓” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵梨熙,是天一觀的道長开镣。 經常有香客問我,道長咽扇,這世上最難降的妖魔是什么邪财? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮质欲,結果婚禮上树埠,老公的妹妹穿的比我還像新娘。我一直安慰自己把敞,他們只是感情好弥奸,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奋早,像睡著了一般盛霎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耽装,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天愤炸,我揣著相機與錄音,去河邊找鬼掉奄。 笑死规个,一個胖子當著我的面吹牛凤薛,可吹牛的內容都是我干的。 我是一名探鬼主播诞仓,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼缤苫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墅拭?” 一聲冷哼從身側響起活玲,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍婉,沒想到半個月后舒憾,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡穗熬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年镀迂,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唤蔗。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡探遵,死狀恐怖,靈堂內的尸體忽然破棺而出措译,到底是詐尸還是另有隱情别凤,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布领虹,位于F島的核電站规哪,受9級特大地震影響,放射性物質發(fā)生泄漏塌衰。R本人自食惡果不足惜诉稍,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望最疆。 院中可真熱鬧杯巨,春花似錦、人聲如沸努酸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽获诈。三九已至仍源,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舔涎,已是汗流浹背笼踩。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亡嫌,地道東北人嚎于。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓掘而,卻偏偏與公主長得像,于是被迫代替她去往敵國和親于购。 傳聞我的和親對象是個殘疾皇子袍睡,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348