blog: http://homeway.me/web
http網上講的不少,不外乎就那幾點。chrome
先看個http流程圖:緩存
http 1.0, 一個請求開啓一次TCP鏈接。服務器
詳細的看這裏吧: http://blog.csdn.net/forgotaboutgirl/article/details/6936982網絡
http 2.0將可能引入 SPDY 協議。併發
SODY協議是由google基於TCP應用層協議,避開HTTP的短鏈接損耗,同時支持多路複用(利用多stream機制),使得服務端和客戶端僅需一個TCP鏈接便可傳輸任意內容,大大節省服務器資源,提升網絡利用率。同時易於部署,服務端客戶端加上SPDY協議的解析便可,對於應用開發人員、應用用戶而言不須要任何額外知識。測試
SPDY有幾個新特性:網站
SPDY容許在單一TCP鏈接上併發無限個stream。因爲請求能夠在單一通道上交錯,TCP的效率高了許多:只需不多的鏈接,而且網絡封包也能夠更少更緊湊。google
當你打開一個TCP連接,發送請求包,將持續收到stream式數據。spa
SPDY容許壓縮HTTP請求和響應頭,所以能夠(比傳統HTTP)傳輸更少的包和數據.
http 1.0時代,服務器只能被動接受,客戶端主動請求,服務器只負責回饋數據。
SPDY在實驗服務器經過聲明X-Associated-Content頭來推送內容。服務端經過這個頭告知客戶端須要推送資源。
HTTP自己是單次請求+單次響應的結構,因此SPDY中使用帶有FLAG_FIN的SYN_STREAM來兼容HTTP請求,而帶有FLAG_FIN的SYN_REPLY來兼容HTTP響應。對於帶有請求body(上傳文件)的狀況,這時在SYN_STREAM能夠不包含FLAG_FIN標識,而後客戶端將數據按數據幀的大小限制(最大2^31 – 1)進行拆分,跟隨發送若干數據幀,在最後一個數據幀上帶有FLAG_FIN便可。對於服務端響應中的大量內容(如HTML頁面、JS、CSS等),一樣採用相似方法,只在最後一個數據幀帶上FLAG_FIN。
先看看你點擊一個網站產生的數據流。
網口轉換
數據形式轉換
光纜/電纜傳輸
ISP接入
服務器解析
客戶端渲染
還有一個重要的: DNS查詢
一個web測試網站:http://www.webpagetest.org/
下面對醒來網站的測試:
從下面的測試能夠看出,訪問一個網站耗時的幾個東西:
下載一個很大的png
DNS查詢
TCP流初始化時間
關於網絡帶寬與延遲的測試
從上面很容易看到,網絡帶寬不是最主要的問題,網絡延遲纔是主要問題。
查看你本地的DNS緩存:chrome://dns
本文連接,轉載請註明來源。 http://homeway.me
-by 小草
2014-09-11 21:57:14