緩存實現

緩存的實現原理

  • 什麼是 Web 緩存
     WEB 緩存(cache)位於 Web 服務器和客戶端之間。
     緩存會根據請求保存輸出內容的副本,例如 html 頁面,圖片,文件,當下一個請求來
     到的時候:如果是相同的 URL,緩存直接使用副本響應訪問請求,而不是向源服務器再次發
     送請求。
     HTTP 協議定義了相關的消息頭來使 WEB 緩存儘可能好的工作。
    
  • 緩存的優點
      1.減少相應延遲:因爲請求從緩存服務器(離客戶端更近)而不是源服務器被相應,
      這個過程耗時更少,讓 web 服務器看上去相應更快。
      2.減少網絡帶寬消耗:當副本被重用時會減低客戶端的帶寬消耗;客戶可以節省帶
      寬費用,控制帶寬的需求的增長並更易於管理。
    
  • 與緩存相關的 HTTP 擴展消息頭
      1.Expires:指示響應內容過期的時間,格林威治時間 GMT
      2.Cache-Control:更細緻的控制緩存的內容
      3.Last-Modified:響應中資源最後一次修改的時間
      4.ETag:響應中資源的校驗值,在服務器上某個時段是唯一標識的。
      5.Date:服務器的時間
      6.If-Modified-Since:客戶端存取的該資源最後一次修改的時間,同 Last-Modified。
      7.If-None-Match:客戶端存取的該資源的檢驗值,同 ETag。
    
  • 客戶端緩存生效的常見流程
      服務器收到請求時,會在 200OK 中回送該資源的 Last-Modified 和 ETag 頭,客戶端將
      該資源保存在 cache 中,並記錄這兩個屬性。當客戶端需要發送相同的請求時,會在請求中
      攜帶 If-Modified-Since 和 If-None-Match 兩個頭。兩個頭的值分別是響應中
      Last-Modified 和 ETag 頭的值。服務器通過這兩個頭判斷本地資源未發生變化,客戶端不
      需要重新下載,返回 304 響應。常見流程如下圖所示:
    
  • 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 的請求的話,緩存就會過
      期。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章