HTTP通常用於分布式信息系統,在分布式信息系統中,通過使用響應緩存可以提高性能。HTTP/1.1協議包含了許多旨在使緩存工作的元素。
在HTTP/1.1中,緩存的目標是在許多情況下消除發送請求的需要,在許多其他情況下消除發送完整響應的需要。
HTTP/1.1中的基本緩存機制是對緩存的隱式指令,其中伺服器指定過期時間和驗證器。爲此,我們使用緩存控制頭。
緩存控制頭允許客戶端或伺服器在請求或響應中傳輸各種指令。這些指令通常會覆蓋默認的緩存算法。緩存指令在逗號分隔的列表中指定。例如:
Cache-control: no-cache
客戶端可以在其HTTP請求中使用以下緩存請求指令:
S.N. | Cache Request Directive and Description |
---|---|
1 | no-cache 在未成功與源伺服器重新驗證之前,緩存不能使用響應來滿足後續請求。 |
2 | no-store 緩存不應存儲有關客戶端請求或伺服器響應的任何內容。 |
3 | max-age = seconds 表示客戶端願意接受其時間不大於以秒爲單位的指定時間的響應。 |
4 | max-stale [ = seconds ] 表示客戶端願意接受已超過其過期時間的響應。如果給定秒數,則其過期時間不得超過該時間。 |
5 | min-fresh = seconds 表示客戶端願意接受其新鮮度生存期不小於其當前年齡加上以秒爲單位的指定時間的響應。 |
6 | no-transform 不轉換實體體。 |
7 | only-if-cached 不檢索新數據。只有當文檔在緩存中時,緩存才能發送該文檔,並且不應與源伺服器聯繫以查看是否存在較新的副本。 |
伺服器可以在其HTTP響應中使用以下緩存響應指令:
S.N. | Cache Response Directive and Description |
---|---|
1 | public 指示任何緩存都可以緩存響應。 |
2 | private 指示響應消息的全部或部分是爲單個用戶準備的,不能由共享緩存緩存。 |
3 | no-cache 在未成功與源伺服器重新驗證之前,緩存不能使用響應來滿足後續請求。 |
4 | no-store 緩存不應存儲有關客戶端請求或伺服器響應的任何內容。 |
5 | no-transform 不轉換實體體。 |
6 | must-revalidate 緩存在使用之前必須驗證過期文檔的狀態,並且不應使用過期文檔。 |
7 | proxy-revalidate proxy revalidate指令的含義與must-revalidate指令相同,只是它不適用於非共享用戶代理緩存。 |
8 | max-age = seconds 表示客戶端願意接受其時間不大於以秒爲單位的指定時間的響應。 |
9 | s-maxage = seconds 此指令指定的最大使用期限將覆蓋由max age指令或Expires頭指定的最大使用期限。私有緩存總是忽略s-maxage指令。 |