Cache-Control指令

花酒清明發表於2020-11-10

表示是否能快取的指令

public指令

當指定使用public命令時,明確表明其他使用者也可利用快取

private指令

當指定private指令後,響應只以特定的使用者作為物件,與public行為相反,對於非特定使用者,代理伺服器則不會返回快取

no-cache 指令

使用該指令的目的是為了防止從快取中返回過期的資源。

客戶端傳送的請求包含該指令,表示客戶端不會接受快取過的響應,中間的快取伺服器就必須把客戶端請求轉發給源伺服器;

伺服器返回的請求包含該指令,那麼快取伺服器不能對資源進行快取。源伺服器以後將不再對快取伺服器請求中提出的資源有效性進行確認,且禁止其對響應資源進行快取操作

(no-cache=Location)

若像上述一樣對no-cache具體指定引數值,那麼客戶端在接受到這個被指定引數值的首部欄位對應的響應報文後,就不能使用快取。換言之,無引數值的首部欄位可以使用快取。只能在響應指令中指定該引數。

控制可執行快取的物件的指令

no-store指令

當使用no-store指令時,暗示請求(和對應的響應)或響應中包含機密資訊。因此,該指令規定快取不能在本地儲存請求或相應的任意部分。

指定快取期限和認證的指令

s-maxage指令

示例:Cache-control:s-maxage=xxxx(單位:秒)

只適用於供多位使用者使用的公共快取伺服器(一般指代理伺服器),對同一使用者重複返回響應的伺服器來說,該指令無任何作用。

max-age指令

示例:Cache-control:max-age=xxxx(單位:秒)

客戶端傳送包含該指令,若判定快取資源的快取時間比指定時間數值小,則接受快取的資源。若max-age=0,那麼快取伺服器需要將請求轉發給源伺服器;

伺服器返回的響應包含該指令,快取伺服器在指定時間內將不對快取資源的有效性再作確認。

min-fresh指令

示例:Cache-control:min-fresh=xxxx(單位:秒)

該指令要求快取伺服器返回至少還未過指定時間的快取資源。比如,設定60秒,過了60秒的資源都無法作為響應返回。

max-stale

示例:Cache-control:max-stale=xxxx(單位:秒)

該指令可指示快取資源。即使過期也照常接收。若未指定具體數值,那麼無論過多久,客戶端都會接受響應。如果指令中指定具體數值,即使過期,只要仍處於max-stale指定的時間內,仍會被客戶端接收。

only-if-cached

該指令表示客戶端僅在快取伺服器本地快取目標資源的情況下才會要求其返回。亦即快取伺服器不重新載入響應,也不會再確認資源有效性,若發生快取伺服器本地快取無響應,則返回504狀態碼Gateway Timeout.

must-revalidate

使用該指令,代理會向源伺服器再次驗證即將返回的響應快取目前是否仍然有效。

若無法獲取,返回504狀態碼,另外該指令忽略請求的max-sale指令

proxy-revalidate

該指令要求所有的快取伺服器在接受到客戶端帶有該指令的請求返回響應之前,必須再次驗證快取的有效性

no-transform

該指令規定無論是在請求還是響應中,快取都不能改變實體主體的媒體型別(可以防止快取或代理壓縮圖片等類似操作)

cache-control擴充套件

例項:Cache-control:private,community=“UCI”

通過cache-extension(標記)(token),可以擴充套件Cache-control首部欄位內的命令。extension tokens僅對能理解他的伺服器來說有意義,不能被理解就會直接被忽略。

相關文章