衡量一個(gè)網(wǎng)站的性能有多個(gè)指標(biāo),DNS解析時(shí)間,TCP鏈接時(shí)間,HTTP重定向時(shí)間,等待服務(wù)器響應(yīng)時(shí)間等等,從用戶角度來看,就可以歸結(jié)為該網(wǎng)站訪問速度的快慢。也就是說性能等于網(wǎng)站的訪問速度。
早些年Amazon曾經(jīng)做過一個(gè)統(tǒng)計(jì):網(wǎng)頁加載時(shí)間每延長(zhǎng)1秒鐘,一年將減少16億美元的營(yíng)收。(16億美元是一個(gè)什么概念呢?2015年,百度全年的總營(yíng)收約100億美元?。?。
鑒于性能的重要性,于是我們便經(jīng)??吹皆S多記錄提升訪問速度的方法的文章:減少http請(qǐng)求,雪碧圖,壓縮文件等等,看了這些文章后,博主了解了一些比較普遍的提升性能的方法,但是還不明白為啥這樣能提升速度呀!
作為一名有志青年,博主認(rèn)為,不僅要知其然,還要知其所以然。在查閱大量書籍和博文后,終于明白了其中的玄機(jī),特此記錄下來,與大家分享。

接下來,我們首先來深入理解一個(gè)瀏覽器與互聯(lián)網(wǎng)的通信過程,然后分析每個(gè)過程所占時(shí)間的多少,以及哪些過程的時(shí)間是可以減少的,再說明通過怎樣的方法可以減少這些時(shí)間,以此來縮小網(wǎng)站總的加載時(shí)間,提升網(wǎng)站的訪問速度。

從輸入url到瀏覽器開始渲染頁面中間都發(fā)生了什么

互聯(lián)網(wǎng)內(nèi)各網(wǎng)絡(luò)設(shè)備間的通信都遵循TCP/IP協(xié)議,利用TCP/IP協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過分層順序與對(duì)方進(jìn)行通信。分層由高到低分別為:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。發(fā)送端從應(yīng)用層往下走,接收端從數(shù)據(jù)鏈路層網(wǎng)上走。如圖所示:

  1. 在瀏覽器中輸入url