緩存的HTTP控制字段:
(HTTP1.0)
Expires:5 Jul 2018 16:00:00 GMT
在設置的時間內直接從瀏覽器中取值---200 OK (from memory cache)
Cache-control:(HTTP1.1)
max-age:從請求開始到設置的這段時間內直接從瀏覽器讀取信息,客戶端不會再向服務器發起請求,返回200 OK (from memory cache),從瀏覽器中取資源,優先級高於Expires
s-maxage:只能設置pulic的緩存設備(好比代理,CDN,用戶本身的瀏覽器緩存屬於private的緩存);設置的時間不過時,如CDN是不會去服務器更新同步文件的,瀏覽器請求後CDN返回304,直接把資源給客戶端
private:
public:
no-cache:客戶端不會直接從瀏覽器中取資源(max-age和expires只要在設定時間內,直接從瀏覽器中取值,返回200)
no-store:客戶端不會複製對象,對已複製對象刪除,不緩存
max-age和Expires強制從瀏覽器中讀取文件,致使服務端若是文件發生變化客戶端沒法感知到的,那能夠利用
last-modified ---responseHeader 告訴瀏覽器文件的最後文件編輯時間
If-Modified-Since: --- requestHeader 客戶端發送該字段告訴服務端,它本身緩存文件是何時編輯的,若是命中返回304 Not Modified,未命中就返回200 告訴瀏覽器緩存的文件不能用,替換新的
用last-modified:
1)有些文檔可能會被週期性地重寫(好比, 從一個後臺進程中寫入), 但實際包含
的數據經常是同樣的。 儘管內容沒有變化, 但修改日期會發生變化。
2)有些文檔可能被修改了, 但所作修改並不重要, 不須要讓世界範圍內的緩存都重
裝數據(好比對拼寫或註釋的修改)。
3)有些服務器沒法準確地斷定其頁面的最後修改日期。
4)有些服務器提供的文檔會在亞秒間隙發生變化(好比, 實時監視器), 對這些服
務器來講, 以一秒爲粒度的修改日期可能就不夠用了。
ETag: ---responseHeader 優先級高於last-modified 如:(ETag:W/"3794-1526888447052",具體參考HTTP權威指南)/w標識弱驗證器
If-None-Match: ---requestHeader