
瀏覽器緩存.png
描述:C:client S:server (1.1)(1.2)分別為(1)的不同情況下走的流程
C第一次請求-》S返回response-header:{cache-control:max-age private(默認)/public no-cache/no-store(一個或多個)}-》C緩存header
C第二次請求-》檢查header,判斷是否有緩存(1)-》
(1.1)有緩存-》判斷是否過期(2)-》
(1.2)無緩存-》請求服務器
(2.1)過期-》使用協(xié)商緩存
(2.2)沒過期-》判斷是否跳過強緩存(3)-》
(3.1)跳過強緩存-》使用協(xié)商緩存
(3.2)不跳過強緩存-》使用強緩存
協(xié)商緩存-》帶上{if-none-match:Etag,if-modified-since:Last-modified}字段訪問S-》S對比兩個字段-》資源是否變化(4)-》
(4.1)資源變化-》返回304,及變化后的header
(4.2)-》返回200,繼續(xù)使用緩存,更新header
有興趣結合流程圖看看吧,個人總結,如有錯誤歡迎指出。