HTTP 請求延遲解決方案

admin發表於2019-05-09

HTTP1.1請求缺陷在當前體現越來越明顯,具體參閱HTTP1.1優點與缺點一章節。

解決隊頭堵塞(Head-of-line blocking)不考慮應用HTTP2協議的話,主要有如下兩種方式:

(1).減少請求數量。

(2).同時多開持久連線。

基於以上兩種解決思路,衍生出以下幾種具體的解決方案:

(1).css sprites技術:

將大量較小的圖片合併成一張大圖,比如一個頁面有大量的瑣碎的背景圖片。

那麼可以將瑣碎背景圖片合併在一張背景圖之上,然後再利用JavaScript或css技術將圖片"切割"使用。

簡單圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201905/09/080307quhhklihikrrhuyr.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

HTTP1.1裡,下載一張大圖比下載100張小圖快得,但是某些頁面只需要顯示其中幾張小圖時

此方案的缺點就凸顯出來,它必須將整張大圖都從快取裡取出,而不能將最頻繁使用的那些圖片保留在快取裡。

(2).使用內聯圖片:

也就是使用Data:URL方式表示圖片,這樣就避免的一次HTTP請求。

具體參閱Data:URL表示圖片一章節。

(3).檔案拼接:

一個大型的網站,可能會引入大量的JavaScript檔案,這樣需要傳送多次請求。

當前可以通過一些前端工具,將這些JavaScript檔案合併器起來,於是就可以達到減少請求次數的目的。

(4).分片:

它就是將被請求的資源分散在儘可能多的主機上。

一個客戶端最多隻能對同一主機建立的TCP連線是有限制的。

所以我們可以將資源分發很多主機之上,這樣就可以建立更多的TCP連線。

圖示如下:

aid[3263]

上述圖片對於分片進行了展示,比較簡單不多介紹。

相關文章