【发布时间】:2011-04-21 22:00:05
【问题描述】:
我想为 POST 请求创建一个可缓存的 HTTP 响应。
我的实际实现对 POST 请求的响应如下:
HTTP/1.1 201 Created
Expires: Sat, 03 Oct 2020 15:33:00 GMT
Cache-Control: private,max-age=315360000,no-transform
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 9
ETag: 2120507660800737950
Last-Modified: Wed, 06 Oct 2010 15:33:00 GMT
.........
但看起来浏览器(Safari、Firefox 测试)没有缓存响应。
在HTTP RFC对应的部分说:
对此方法的响应不可缓存,除非响应包含适当的 Cache-Control 或 Expires 标头字段。但是,303(参见其他)响应可用于指示用户代理检索可缓存资源。
所以我认为它应该被缓存。我知道我可以设置会话变量并设置 cookie 并执行 303 重定向,但我想缓存 POST 请求的响应。
有什么办法吗?
P.S.:我从一个简单的200 OK 开始,所以它不起作用。
谢谢,
【问题讨论】:
-
对帖子的响应通常是唯一的,具体取决于发布的参数,因此缓存它通常没有意义。你的回应是什么?我有一种感觉,你在做一些不完全正确的事情。
-
这将是一个类似商店的东西。如果有人向 URL 发布内容,它将将该内容存储在该客户端的指定位置。因此客户端可以缓存它并且不需要重新检查位置,因为它与为当前客户端发布的位置相同。
-
我解决了带有自定义标头(用于值)的 AJAX GET 请求的实际问题。但我仍然对这个问题感兴趣。
标签: http browser caching post cross-browser