前端筆記(11)提升首屏加載速度

首屏加載速度影響著用戶對整個網站的第一體驗尤為關鍵。那么如果才能夠優(yōu)化首次加載時的白屏時間?
上一篇文章簡單介紹了在瀏覽器里,從輸入 URL 到頁面展示的過程∠臃停現在我們將整個過程劃分為三個階段:

1.從請求發(fā)出后到文檔提交階段,這個階段中用戶看到的還是跳轉前的上一個頁面掺炭。
2.文檔提交以后辫诅,渲染進程創(chuàng)建一個空白頁面,并等待css涧狮、javascript的加載泥栖,生成CSSOM和DOM,然后構建布局樹渲染頁面勋篓。
3.頁面渲染完成以后進入頁面繪制階段。

影響第一個階段的主要因素是網絡以及服務器魏割。影響第三個階段主要因素是瀏覽器的性能已經用戶的主機性能譬嚣。
這里我們主要分析第二個階段。這個階段如果處理的不好就會存在過長的白屏時間嚴重影響體驗钞它。我們再次分解第二個階段:

  • 解析html生成DOM
  • 下載css
  • 下載javascript
  • 生成CSSOM
  • 執(zhí)行javascript
  • 生成布局樹
  • 渲染頁面

在這其中下載javascript以及執(zhí)行javascript會阻塞DOM樹的構建拜银,下載css雖然不會直接阻塞DOM樹的構建但是JavaScript執(zhí)行需要等css下載完成以后,因此也可能阻塞DOM樹的構建遭垛。

由于css代碼不會阻塞DOM構建所有我們可以將其應該盡量靠前尼桶。

javascript代碼無論放在任何位置都會阻塞DOM樹的構建,我可以將不存在dom操作的JavaScript代碼放在css之前锯仪,使其不受css下載的影響泵督。將存在dom操作的JavaScript代碼放在盡量靠后的位置,使其可以操作dom的同時盡可能與css距離足夠遠盡可能減少受css下載影響的可能性庶喜。

因此我們可以通過以下幾種手段優(yōu)化首屏加載速度:

  • 根據情況調整JavaScript代碼與css代碼的位置小腊。(包括內聯、外聯)
  • 使用內聯JavaScript久窟、內聯css秩冈,是的DOM構建以及頁面渲染不需要等待外部資源的下載。
  • 內聯并非所有情況都使用斥扛,通過壓縮入问、移除注釋、移除打印來較小JavaScript文件以及css文件的大小
  • 使用async和defer標記script標簽實現JavaScript的異步執(zhí)行。
  • 通過媒體查詢標記不同用途的css文件芬失,使得某些css文件只有在特定情況下加載楣黍。

實際場景中還需要根據情況進行分析,找出影響頁面首屏速度關鍵點麸折。例如針對單頁面應用使用服務端渲染首屏锡凝、使用瀏覽器的強緩存與協商緩存。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末垢啼,一起剝皮案震驚了整個濱河市窜锯,隨后出現的幾起案子,更是在濱河造成了極大的恐慌芭析,老刑警劉巖锚扎,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異馁启,居然都是意外死亡驾孔,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門惯疙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翠勉,“玉大人,你說我怎么就攤上這事霉颠《月担” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵蒿偎,是天一觀的道長朽们。 經常有香客問我,道長诉位,這世上最難降的妖魔是什么骑脱? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮苍糠,結果婚禮上叁丧,老公的妹妹穿的比我還像新娘。我一直安慰自己椿息,他們只是感情好歹袁,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寝优,像睡著了一般条舔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乏矾,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天孟抗,我揣著相機與錄音迁杨,去河邊找鬼。 笑死凄硼,一個胖子當著我的面吹牛铅协,可吹牛的內容都是我干的。 我是一名探鬼主播摊沉,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼狐史,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了说墨?” 一聲冷哼從身側響起骏全,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尼斧,沒想到半個月后姜贡,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡棺棵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年楼咳,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烛恤。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡母怜,死狀恐怖,靈堂內的尸體忽然破棺而出缚柏,到底是詐尸還是另有隱情糙申,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布船惨,位于F島的核電站,受9級特大地震影響缕陕,放射性物質發(fā)生泄漏粱锐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一扛邑、第九天 我趴在偏房一處隱蔽的房頂上張望怜浅。 院中可真熱鬧,春花似錦蔬崩、人聲如沸恶座。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跨琳。三九已至,卻和暖如春桐罕,著一層夾襖步出監(jiān)牢的瞬間脉让,已是汗流浹背桂敛。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溅潜,地道東北人术唬。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像滚澜,于是被迫代替她去往敵國和親粗仓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355