缓存POST:什么是合适的标题?

时间:2012-05-20 14:19:30

标签: jquery ajax http post

来自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

2 个答案:

答案 0 :(得分:1)

此标题,

Cache-Control:max-age=2592000, public

将导致响应被任何中介缓存很长一段时间。响应有点混乱,因为pragma: no-cache与此相矛盾。但是,我怀疑只有某些较旧的代理才会查看pragma标题。

jQuery无法控制中间缓存,因此在您的ISP上可能存在一些缓存响应的公共缓存。

答案 1 :(得分:0)

似乎令人困惑,Cache-Control看起来像启用缓存,而PragmaExpires似乎同时禁用了缓存。无论如何,HTTP状态代码应该确切地说明请求是否被缓存。 200 - 未缓存,304或类似 - 缓存。