http協議——cache-Control
阿新 • • 發佈:2018-12-13
http協議屬於應用層,用於客戶端和服務端之間的通訊,通過請求和響應的交換達成通訊。它是不儲存狀態的協議,即無狀態協議,每當有新的請求傳送時,都會有新的響應產生。
1.通用首部欄位
1)cache-Control 操作快取的工作機制
cache-Control的指令用於請求和響應略有不同。
快取請求指令:
指令 | 引數 | 說明 |
---|---|---|
no-cache | 無 | 強制向源伺服器再次驗證 |
no-store | 無 | 不快取請求或響應的任何內容 |
max-age=[秒] | 必須 | 響應的最大age值 |
s-maxage=[秒] | 必須 | 同max-age,但使用的伺服器不同 |
min-fresh=[秒] | 必須 | 返回在這個時間內還未過期的資源 |
max-stale=[秒] | 可省略 | 返回還在這個時間內的資源,即使已經過期 |
only-if-cached | 無 | 從快取獲取醫院 |
- no-cache 目的是為了防止從緩衝中返回過期的資源。即如果客戶端的請求中有這個指令,那麼緩衝伺服器就不能將緩衝的資源返回給客戶端,而是轉發客戶端的請求給源伺服器,從源伺服器中請求資源。
- no-store 使用該指令時,暗示請求和響應中包含有機密資訊。因此,該指令規定快取不能在本地快取請求或者響應任一部分
- max-age
cache-Control:max-age=1024(單位:秒)
- s-maxage 功能和max-age指令相同,但是該指令適用於供多位使用者使用的公共快取伺服器(代理)。
- min-fresh 要求快取伺服器返回至少還未過指定時間的快取資源
cache-Control:min-fresh=1024(單位:秒)
當指定min-fresh為1024秒之後,在這1024秒之內,如果有超過有效期限的資源都無法作為相響應返回
- max-stale 可指示快取資源即使過期也照常接受。
cache-Control:max-stale=3600(單位:秒)
當指定max-stale的數值後,如果資源的有效期已過,但是還在max-stale的時間範圍內,那麼客戶端依舊會接收快取資源
如果未指定數值,那麼無論過多久,客戶端都會接收響應。
- only-if-cached 客戶端僅在快取伺服器本地快取目標資源的情況下才要求其返回,即快取伺服器不重新載入響應,也不會確認資源的有效性。若發生請求快取伺服器的本地快取無響應,則返回504狀態碼。
- must-revalidate 代理會向源伺服器再次驗證即將返回的響應快取目前是否有效。
- proxy-revalidate 要求所有的快取伺服器在接收到帶有該指令的客戶端請求返回響應之前,必須在再次驗證資源的有效性。
- no-transfrom 無論在請求還是響應中,快取都不能改變實體主體的媒體型別。可防止快取或代理壓縮圖片等操作
快取響應指令:(僅列出與請求不同的部分,相同的不再說明)
指令 | 引數 | 說明 |
---|---|---|
public | 無 | 可向任意使用者提供響應快取 |
private | 可省略 | 僅對特定使用者返回響應 |
no-cache | 可省略 | |
no-store | 無 | |
no-stransform | 無 | 代理不可更改媒體型別 |
must-revalidate | 無 | 可快取但必須再向源伺服器進行確認 |
proxy-revalidate | 無 | 要求中間快取伺服器對快取的響應有效性再進行確認 |
max-age | ||
s-maxage |
- public 明確表示其他使用者也可以利用快取
- private 快取伺服器只會對該特定的使用者提供資源快取的服務,對於其他使用者傳送過來的請求,代理伺服器不會返回快取
- no-cache 快取伺服器不能對資源進行快取。源伺服器以後也將不會對快取伺服器請求中提出的資源有效性進行確認,且禁止其對響應資源進行快取操作
- max-age 當伺服器返回的響應中包含max-age指令時,快取伺服器將不對資源的有效性再做確認