浏览器是否可以缓存PATCH请求

时间:2018-12-28 17:32:57

标签: http caching http-patch

如果您获取图像以显示第二或n + 1次,或者同样获取一些JSON,并且没有任何变化,则浏览器实际上不应下载/获取内容。这就是GET请求与缓存一起工作的方式。

但是,我想知道,假设不是使用GET而是使用PATCH来获取图像或JSON,而不是使用GET。想知道如果没有任何变化,浏览器是否仍然可以使用其缓存版本,或者需要做些什么才能使PATCH像GET一样工作,以使其不获取缓存内容。

1 个答案:

答案 0 :(得分:0)

重要的是要了解PATCH并不是获取的任何内容。您正在服务器上进行更改,响应可能包含有关如何应用更改的信息。

GET以外的HTTP请求有时可以被缓存。要了解PATCH是否为真,可以阅读RFC的内容。 RFC的意思是:

  

对此方法的响应只有包含显式的新鲜度信息(例如Expires标头或      “ Cache-Control:max-age”指令)以及Content-Location      与Request-URI匹配的标头,指示PATCH响应      主体是资源的表示形式。缓存的PATCH响应只能      用于响应后续的GET和HEAD请求;它一定不能      用于响应其他方法(尤其是PATCH)。

这已经建议'否',两次执行PATCH请求不会导致第二个请求被跳过。

HTTP方法要注意的第二件事是它们是幂等的还是安全的。 PATCH都不是。

RFC7231谈到可缓存方法:

  

通常,安全的方法可以      不依赖于当前或权威的响应被定义为      可缓存该规范将GET,HEAD和POST定义为      可缓存的,尽管绝大多数缓存      实现仅支持GET和HEAD。

这两个都表明'no',PATCH是不可缓存的,并且没有HTTP标头集可以使它如此。