来自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忽略了该选项。引用documention as of 2012-05-20 CEST:
使用POST获取的页面永远不会被缓存,因此jQuery.ajaxSetup()中的cache和ifModified选项对这些请求没有影响。
这可能是jQuery的文档错了吗?查看我的related thread in the jQuery forum。
答案 0 :(得分:1)
此标题,
Cache-Control:max-age=2592000, public
将导致响应被任何中介缓存很长一段时间。响应有点混乱,因为pragma: no-cache
与此相矛盾。但是,我怀疑只有某些较旧的代理才会查看pragma标题。
jQuery无法控制中间缓存,因此在您的ISP上可能存在一些缓存响应的公共缓存。
答案 1 :(得分:0)
似乎令人困惑,Cache-Control
看起来像启用缓存,而Pragma
和Expires
似乎同时禁用了缓存。无论如何,HTTP状态代码应该确切地说明请求是否被缓存。 200
- 未缓存,304
或类似 - 缓存。