是否可以在HTTP中缓存POST方法?使用非常简单的缓存语义:如果参数相同(当然URL相同),那么它就是一个命中。那可能吗?推荐的?
3 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
如果使用适当的头,则9.5节(POST)中相应的RFC 2616允许缓存对POST消息的响应。
除非响应包含适当的Cache-Control或Expires头字段,否则对此方法的响应不可缓存。但是,303(请参阅其他)响应可用于指示用户代理检索可缓存资源。
请注意,相同的RFC在第13节(在HTTP中缓存)中明确指出缓存必须在POST 请求后使相应的实体无效。
某些HTTP方法必须导致缓存使实体无效。这可以是Request-URI引用的实体,也可以是Location或Content-Location头(如果存在)。这些方法是:
- PUT - DELETE - POST
我不清楚这些规范如何允许有意义的缓存。
哈士奇WWW
TA贡献1799条经验 获得超6个赞
根据RFC 2616第9.5节:
“对POST方法的响应不可缓存,除非响应包含适当的Cache-Control或Expires头字段。”
所以,是的,你可以缓存POST请求响应,但只有当它到达时才有适当的头。在大多数情况下,您不希望缓存响应。但在某些情况下 - 例如,如果您没有在服务器上保存任何数据 - 这是完全合适的。
请注意,然而,无论标头如何,许多浏览器(包括当前的Firefox 3.0.10)都不会缓存POST响应。在这方面,IE表现得更聪明。
现在,我想澄清一些关于RFC 2616 S. 13.10的混淆。对于URI的POST方法不会“使用于缓存的资源无效”,正如一些人在此处所述。它使该URI的先前缓存版本过时,即使其缓存控制头指示较长持续时间的新鲜度。
- 3 回答
- 0 关注
- 2617 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消