一份http的緩存清單

http 緩存

  • http 緩存策略 (強制緩存 + 協商緩存)
  • 刷新操做方式,對緩存的影響

  • 關於緩存
    • 什麼是緩存?
    • 爲何須要緩存?
      • 頁面加載更快 ~
    • 哪些資源能夠被緩存?
      • 靜態資源(js、css、img)

  • http 緩存 - 強制緩存
    • 圖解:
      • 一、初次請求從服務端獲取
      • 二、服務端認爲這個資源可以緩存,則在響應頭部帶上Cache-Control
      • 三、再次請求,如圖
      • image.png
      • image.png
    • Cache-Control
      • 在 Response Headers 中
      • 控制強制緩存的邏輯
      • 列如:Cache-Control:max-age=31236000(單位是秒) 則在客戶端緩存一年最大時間
      • cache-control 的值
        • max-age 設置緩存
        • no-cache 不緩存但不限制服務端的操做
        • no-store 不緩存且限制服務端也不緩存
        • private 只容許最終的用戶作緩存
        • publicb 容許中間的鏈路也緩存,如路由、代理

    • 關於 Expires
      • 在 Response Headers 中
      • 同爲控制緩存過時
      • 已被 Cache-Control 代替

    • http 緩存 - 協商緩存(對比緩存)
      • 服務端緩存策略 (服務端的依據來判斷這個資源能不能緩存)
      • 服務端判斷客戶端資源,是否和服務端資源同樣
      • 一致就返回 304,不然返回 200 和 最新資源 以及資源標識
      • 圖解:
        • 協商緩存
        • 資源標識:
          • 在Response Headers 中,有兩種:css

            • Last-Modified 資源的最後修改時間
            • Etag 資源的惟一標識 (一個字符串,相似人類的指紋)
          • 圖解:緩存

          • image.png

          • image.png

          • 例子:markdown

          • image.png

          • image.png


      • Last-Modified 和 Etag
        • 優先使用Etag
        • Last-Modified 只能精確到秒級 而計算機通常是毫秒級
        • 若是資源被重複生成,而內容不變,則Etag 更精準,更節約資源

      • 流程圖
      • image.png
相關文章
相關標籤/搜索