深入理解http/https之緩存 2


1:web緩存的實現

web緩存:

WEB緩存(cache)位於Web服務器和客戶端之間。

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

HTTP協議定義了相關的消息頭來使WEB緩存盡可能好的工作。如下圖。

 

2:緩存的優點

減少延遲 減少網絡帶寬的消耗;

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

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

3:與緩存相關的http擴展消息頭

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

Cache-Control:更細致的控制緩存的內容  max-age就是確定緩存的時間。

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

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

Date:服務器的時間

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

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

4:緩存(cache)生效的過程

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

客戶端緩存生效的常見流程

 

5:http的緩存機制

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的請求的話,緩存就會過期。

6:斷點續傳和多線程下載的原理

(一)HTTP協議的GET方法,支持只請求某個資源的某一部分;

206 Partial Content 部分內容響應;

Range 請求的資源范圍;

Content-Range 響應的資源范圍;

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

(二)分塊請求資源實例:

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

Eg2:Content-Range: bytes 306302-604047/604048:響應中指示攜帶的是該資源的第306302-604047的字節,該資源共604048個字節;

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

多線程下載的原理:

下載工具開啟多個發出HTTP請求的線程;

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

合並每個線程下載的文件。

7:https

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

見下圖:

什么是https

https所用的端口號是443。

 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM