是否可以在HTTP中缓存POST方法?

是否可以在HTTP中缓存POST方法?

使用非常简单的缓存语义:如果参数相同(当然URL相同),那么它就是一个命中。那可能吗?推荐的?



墨色风雨
浏览 2618回答 3
3回答

有只小跳蛙

如果使用适当的头,则9.5节(POST)中相应的RFC 2616允许缓存对POST消息的响应。除非响应包含适当的Cache-Control或Expires头字段,否则对此方法的响应不可缓存。但是,303(请参阅其他)响应可用于指示用户代理检索可缓存资源。请注意,相同的RFC在第13节(在HTTP中缓存)中明确指出缓存必须在POST 请求后使相应的实体无效。某些HTTP方法必须导致缓存使实体无效。这可以是Request-URI引用的实体,也可以是Location或Content-Location头(如果存在)。这些方法是:  - PUT   - DELETE   - POST我不清楚这些规范如何允许有意义的缓存。

哈士奇WWW

根据RFC 2616第9.5节:“对POST方法的响应不可缓存,除非响应包含适当的Cache-Control或Expires头字段。”所以,是的,你可以缓存POST请求响应,但只有当它到达时才有适当的头。在大多数情况下,您不希望缓存响应。但在某些情况下 - 例如,如果您没有在服务器上保存任何数据 - 这是完全合适的。请注意,然而,无论标头如何,许多浏览器(包括当前的Firefox 3.0.10)都不会缓存POST响应。在这方面,IE表现得更聪明。现在,我想澄清一些关于RFC 2616 S. 13.10的混淆。对于URI的POST方法不会“使用于缓存的资源无效”,正如一些人在此处所述。它使该URI的先前缓存版本过时,即使其缓存控制头指示较长持续时间的新鲜度。
打开App,查看更多内容
随时随地看视频慕课网APP