如果HTTP请求缓存控制标头与响应缓存控制标头不同,该怎么办

时间:2020-04-10 17:53:18

标签: http web caching http-headers frontend

enter image description here

请参见上面的屏幕截图。响应标头的缓存控制设置为max-age,这意味着资源被视为新鲜的最长时间。我相信,如果我们在该时间段内发出请求,浏览器将提供本地副本,而不会打扰服务器。,并且请求标头的缓存控制设置为no-cache,表示according to MDN

响应可以由任何缓存存储,即使请求正常 不可缓存。但是,存储的响应必须始终会通过 在使用原始服务器之前,请先与原始服务器进行验证,

所以在这里我们有一个矛盾。在这种情况下,浏览器会遵循哪个缓存控制指令,即,每次请求触发时,都会按照on-cache的建议与服务器进行验证,或者如果请求在请求的时间范围内,则不与服务进行验证max-age

1 个答案:

答案 0 :(得分:1)

没有矛盾。 request 上的no-cache告诉任何中间服务器他们不能用缓存的副本进行响应。他们必须联系原始服务器。 响应上的max-age告诉客户端可以认为响应新鲜的时间有多长时间。请注意,询问浏览器是否将“符合”请求标头没有任何意义。它是创建请求标头的那个。

更一般地说,重点是标题在请求和响应上的含义不同。在MDN文章中看不出来,但是差异在the specification中有详细说明。

相关问题