[英]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.