NSURLCache 會將數據緩存到沙盒路徑下的Library/Caches 中,通過請求的url+參數來作為key儲存的
Http 緩存流程
Http 緩存流程
緩存是否過期 根據服務器端返回的 max-age判斷的, 影響的是下一次網絡請求
處理http cache的優先級:
先判斷資源是否命中強緩存,命中則直接從disk里拿到資源;
如果沒有命中強緩存,判斷是否命中協商緩存,命中則走協商緩存;
如果命中了協商緩存,會發起請求,服務端根據Request Header里的If-None-Match(對應Etag)和If-Modified-Since(對應Last-Modified)判斷資源是否過期,沒過期則返回304狀態碼,瀏覽器依舊用disk里的資源。如果資源過期,則服務端會返回新的資源;
如果也沒有命中協商緩存,則這個請求不走緩存策略,發起真實的請求,從服務端拿資源
Cache-Control在請求頭和響應頭里的區別
請求頭里的Cache-Control影響的是當前這一次請求
響應頭里的Cache-Control是告訴瀏覽器這樣存儲,下次依照這樣來。影響的是下一次請求
Cache-Control:max-age=0 這個值表示,這個請求按照協商緩存的規則走,一定會發出真實的請求。這里和響應頭里的max-age=0有不同
Cache-Control:no-cache 表示這次或下次請求不會讀緩存資源,即便緩存沒有過期,或者資源并沒有修改
緩存:控制客戶端訪問數據方式
服務器設置Cache-Control:max-age=5000 控制客戶端請求數據從獲取緩存取還是服務器數據庫取