首頁 > php教程 > PHP开发 > 深入理解HTTP協定及原理分析之緩存

深入理解HTTP協定及原理分析之緩存

高洛峰
發布: 2016-12-12 11:26:36
原創
1051 人瀏覽過

3.2 快取的實作原理

3.2.1什麼是Web快取

WEB快取(cache)位於Web伺服器和客戶端之間。

快取會根據請求保存輸出內容的副本,例如html頁面,圖片,文件,當下一個請求來到的時候:如果是相同的URL,快取直接使用副本回應存取請求,而不是向來源伺服器再次發送請求。

HTTP協定定義了相關的訊息標頭來使WEB快取盡可能好的工作。

3.2.2快取的優點

減少相應延遲:因為請求從快取伺服器(離客戶端更近)而不是來源伺服器被相應,這個過程耗時更少,讓web伺服器看上去相應更快。

減少網路頻寬消耗:當副本被重複使用時會減低客戶端的頻寬消耗;客戶可以節省頻寬費用,控制頻寬的需求的成長並更易於管理。

3.2.3與快取相關的HTTP擴充訊息頭

Expires:指示回應內容過期的時間,格林威治時間GMT

Cache-Control:更細緻的控制快取的內容

Last-Modified:回應中資源最後一次修改的時間

ETag:回應中資源的校驗值,在伺服器上某個時段是唯一識別的。

Date:伺服器的時間

If-Modified-Since:客戶端存取的該資源最後一次修改的時間,同Last-Modified。

If-None-Match:客戶端存取的該資源的檢驗值,同ETag。

3.2.4客戶端快取生效的常見流程

伺服器收到請求時,會在200OK中回送該資源的Last-Modified和ETag頭,客戶端將該資源保存在cache中,並記錄這兩個屬性。當客戶端需要發送相同的請求時,會在請求中攜帶If-Modified-Since和If-None-Match兩個頭。兩個頭的值分別是響應中Last-Modified和ETag頭的值。伺服器透過這兩個頭判斷本地資源未發生變化,客戶端不需要重新下載,回傳304回應。常見流程如下圖所示:

深入理解HTTP協定及原理分析之緩存

3.2.5 Web快取機制

HTTP/1.1中快取的目的是為了在許多情況下減少發送請求,同時在許多情況下可以不需要發送完整回應。前者減少了網路迴路的數量;HTTP利用一個「過期(expiration)」機制來為此目的。後者減少了網路應用的頻寬;HTTP用「驗證(validation)」機制來為此目的。

HTTP定義了3種快取機制:

1)Freshness:允許一個回應訊息可以在來源伺服器不被重新檢查,並且可以由伺服器和客戶端來控制。例如,Expires回應頭給了一個文件不可用的時間。 Cache-Control中的max-age標識指明了快取的最長時間;

2)Validation:用來檢查以一個快取的回應是否仍然可用。例如,如果一個回應有一個Last-Modified回應頭,快取能夠使用If-Modified-Since來判斷是否已改變,以便判斷根據情況發送請求;

3)Invalidation: 在另一個請求通過快取的時候,常常有一個副作用。例如,如果一個URL關聯到一個快取回應,但是其後跟著POST、PUT和DELETE的請求的話,快取就會過期。

3.3 斷點續傳和多執行緒下載的實作原理

HTTP協定的GET方法,支援只要求某個資源的某一部分;

206 Partial Content 部分內容回應;

Range 請求的資源範圍;

Content-Range 回應的資源範圍;

在連線斷開重連時,客戶端只要求該資源未下載的部分,而不是重新請求整個資源,來實現斷點續傳。

分塊請求資源實例:

Eg1:Range: bytes=306302- :請求這個資源從306302個位元組到末尾的部分;

Eg2:Content-Range: bytes 30630/60402攜帶的是該資源的第306302-604047的字節,該資源共604048個位元組;

客戶端透過並發的請求相同資源的不同片段,來實現對某個資源的並發分塊下載。從而達到快速下載的目的。目前流行的FlashGet和迅雷基本上都是這個原理。

多執行緒下載的原理:

下載工具開啟多個發出HTTP請求的執行緒;

每個http請求只要求資源檔案的一部分:Content-Range: bytes 20000-40000/47000;

線程下載的檔案。

3.4 https通訊過程

3.4.1什麼是https

HTTPS(全名為:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容請看SSL。

見下圖:

深入理解HTTP協定及原理分析之緩存

https所使用的連接埠號碼是443。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板