HTTP協定與Web優化的關係

  • 3997
  • 0
  • 2013-01-17

摘要:HTTP協定與Web優化

這次在WebConf看到 Ihower大分享的SPDY , 網址如下:

 

A brief introduction to SPDY

 

整理了裡面幾個我吸收到的點:

 

許多資訊都告訴我們在優化 Web loading 時可能都可以從下列幾點著手:

 

1.將Request(ex:javascript,css,images等)合併起來,減少Reqeust的數目

 

2.將javascript,css,images等分散在不同Domain

 

讀者也可以在Yahoo 的 Best Practices for Speeding Up Your Web Site 看到第二點的建議

 

讓我們繼續看原因吧:

 

下圖為HTTP 協定 1.0 和 1.1的版本:

 

 

可以看到在1.1時增加了兩個特性,Keep Alive 和 Pipelining,

 

Keep Alive 是為了讓 Reqeusts 可以共享 Connection,

 

Pipelining 的意思為在同一個 Connection 中,平行發送多個 Requests,

 

這個特性原本可以減少網頁 Loading 的時間,但是卻有一個失敗的特性,

 

那就是 Pipelining 的多個 Requests 必須依照順序返回,因此只要有一個

 

Response 卡住,就整個被卡住了,因此這個特性在瀏覽器上預設是關閉的。

 

而目前瀏覽器的 Multiple Connection 的發送大多每個 Domain 只有6個 Connection 可以發送,

 

因此才需要減少Reqeuest 數目的發送,

 

而分散在不同 Domain 的話,才能突破每個 Domain 6個 Connection 發送的限制。

 

TCP Connection 還有一個重要的特性,那就是Slow start (熱身),為了避免資料大量的湧進造成塞車,

 

TCP Connection 在建立初期會限制傳輸的速度(CWND),當連線建立越久,傳輸速度就越快,

 

而且個別的Connection必須個別的熱身。

 

不過在這次 2013 WebConf 的議程中聽到了SPDY 這個新的HTTP協定,強化過的Pipelining 實在強大,

 

而且Google的一些頁面都已經有支援了....