> 原文:[公眾號coding.js](http://mp.weixin.qq.com/s?__biz=MjM5Mzc0MDAwNw==&mid=212340809&idx=1&sn=6d1b294f7f3c03907e68227d05920416#wechat_redirect)

如今,互聯網上的內容越來越豐富,過去幾年時間,一個頁面產生請求和整個大小都一直增長,這個趨勢還會一直保持,對頁面性能優化也要馬不停蹄。

一個頁面,會經歷過加載資源,執行腳本,渲染界面的過程。我們知道,100ms對于計算機來說,可以干很多事情了,但是對于網絡請求,可能一次RTT就沒了。因此,頁面加載對于Web性能是重中之重。
加載的快慢可以總結成受兩個因素影響:**阻塞**與**延遲**。
**1、阻塞。**瀏覽器在解析到腳本時,會阻塞頁面,等到腳本下載執行完才繼續解析文檔。此外,瀏覽器還會限制同域下的并行請求數,超過這個限制后的請求就會被阻塞住。
**2、延遲。**網絡請求都不可避免會有延遲,網頁上的延遲有兩種,一是DNS查詢,二是TCP連接。
克服這些缺點,我們有一些約定俗成的方案:
* 靜態資源要支持304,開啟HTTP緩存控制
* 開啟gzip,壓縮HTTP body
* css放在html的head里,js在body底部
* 合并請求
* 使用雪碧圖
* 域名分區(突破并行限制,也避免傳輸過多cookie)
* 使用cdn
這些方案基本都能立竿見影。但是,對于追求極致(KPI)的我們,這些還是遠遠不夠的。我們從頁面開始加載時說起。
