[英]Caching POST: What are appropriate headers?
根據RFC 2616第9.5節(POST):
除非響應包含適當的Cache-Control或Expires標頭字段,否則對此方法的響應不可緩存。
什么是合適的標題 ?
背景:服務器使用以下標頭進行響應,我擔心響應可能會被緩存。 響應頭示例:
Cache-Control:max-age=2592000, public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:22
Content-Type:application/json
Date:Sun, 20 May 2012 13:46:06 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=15, max=100
Pragma:no-cache
Server:Apache/2.2.22 (Amazon)
Vary:Accept-Encoding,User-Agent
X-Powered-By:PHP/5.3.13
使用jQuery的$.ajax
函數從JavaScript發出發布請求,並將cache
設置為false
。 但是,jQuery忽略了該選項。 引用自其截至2012-05-20 CEST的文獻 :
用POST獲取的頁面永遠不會被緩存,因此jQuery.ajaxSetup()中的緩存和ifModified選項對這些請求沒有影響。
可能是jQuery的文檔錯誤嗎? 請參閱jQuery論壇中的相關主題 。
這個頭
Cache-Control:max-age=2592000, public
將導致響應被任何中介長時間存儲。 響應有點混亂,因為pragma: no-cache
與此矛盾。 但是,我懷疑只是某些較老的代理甚至會查看編譯指示頭。
jQuery無法控制中間緩存,因此,例如在您的ISP處可能存在一些公共緩存,用於緩存響應。
似乎令人困惑, Cache-Control
看起來像啟用緩存,而Pragma
和Expires
似乎同時禁用了緩存。 無論如何,HTTP狀態代碼應准確告知請求是否已緩存。 200
未緩存, 304
或類似內容-已緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.