Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 如果浏览器可以缓存修补程序请求_Http_Caching_Http Patch - Fatal编程技术网

Http 如果浏览器可以缓存修补程序请求

Http 如果浏览器可以缓存修补程序请求,http,caching,http-patch,Http,Caching,Http Patch,如果您获取一个图像以显示一秒钟或n+1次,或者获取一些JSON,并且没有任何更改,那么浏览器实际上不应该下载/获取内容。这就是GET请求与缓存一起工作的方式 但我想知道,假设不是使用GET,而是使用PATCH来获取图像或JSON。想知道如果没有任何更改,浏览器是否仍然可以使用其缓存版本,或者需要做什么才能使修补程序像GET一样工作,从而不获取缓存内容。重要的是要理解,修补程序不用于获取任何内容。您正在服务器上进行更改,响应可能包含有关如何应用更改的信息 除了GET之外的HTTP请求有时是可缓存的

如果您获取一个图像以显示一秒钟或n+1次,或者获取一些JSON,并且没有任何更改,那么浏览器实际上不应该下载/获取内容。这就是GET请求与缓存一起工作的方式


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

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

除了
GET
之外的HTTP请求有时是可缓存的。要了解
PATCH
是否正确,您可以阅读RFC。RFC这样说:

对此方法的响应只有在包含显式新鲜度信息(例如Expires标头或 “缓存控制:最大年龄”指令)以及内容位置 与请求URI匹配的标头,指示修补程序响应 主体是一种资源表示。缓存的修补程序响应只能 用于响应后续GET和HEAD请求;它决不能这样做 用于响应其他方法(特别是补丁)

这已经表明“否”,两次执行
补丁
请求不会导致跳过第二次

HTTP方法要注意的第二件事是它们是幂等的还是安全的<代码>补丁两者都不是

RFC7231对可缓存方法有这样的说法:

一般来说,安全的方法 不依赖当前或权威的响应定义为 可缓存;本规范将GET、HEAD和POST定义为 可缓存,尽管绝大多数缓存 实现只支持GET和HEAD

这两种情况都表明“否”,
PATCH
是不可缓存的,并且没有一组HTTP头可以实现这一点