1. 程式人生 > >HTTP緩存

HTTP緩存

-c last 如果 規則 相同 設置 CA 一次 IE

瀏覽器端的緩存可以分為強制緩存對比緩存

強制緩存

如果是強制緩存,瀏覽器會直接讀取瀏覽器本地存儲的緩存。

如果未失效,則直接使用緩存數據。

如果緩存失效,則會請求服務器端,服務器端返回緩存規則和數據。

對比緩存

如果是對比緩存,瀏覽器首先回去服務器端驗證該緩存是否失效。

如果未失效,則通知瀏覽器該資源未失效。

如果已失效,則返回給瀏覽器最新的數據和緩存規則。並且將緩存規則和最新的數據寫入瀏覽器本地緩存

強制緩存規則

服務器端會返回兩個字段Expires(HTTP1.0)Cache-Control(HTTP1.1)兩個字段來控制強制緩存

由於客戶端的時間不太可控,因此在HTTP1.1中,新增了Cache-Control

,該字段可以直接設置資源的緩存時間max-age。這樣一來,資源的緩存期可以使用服務器端的時間了。

對比緩存規則

對比緩存存在兩套規則

第一種:ETag/If-None-Match這套規則的優先級會高於下面介紹的第二種規則

在第一次服務器端返回一個資源時,在響應頭信息裏面會包含一個ETag的字段,該字段有服務器端生成。

下一次瀏覽器端判斷這個資源是不是過期時,會帶上一個If-Modifed-Since的信息,該信息就是上一次的ETag信息。用於驗證這個資源是不是過期。

如果相同,則返回304的狀態碼

如果不同,則返回200的狀態碼以及最新的資源

第二種:Last-Modified/If-Modified-Since

,本套規則的優先級低於第一套

在第一次返回一個資源時,響應頭信息裏面會包含一個Last-Modifed的字段,該字段有服務器端生成,標識了該資源的上一次修改時間

瀏覽器端再次請求時,會帶上一個If-Modifed-Since的字段,該信息就是Last-Modifed的時間

如果資源的最後修改時間大於If-Modifed-Since,就返回200和最新的資源

如果資源的最後修改時間小於If-Modifed-Since,就返回304,瀏覽器繼續使用本地緩存

HTTP緩存