1

想象一下,我们有 http 客户端、一些代理和用作后端的 Web 服务器。代理被配置为缓存后端的响应。

请求到达,代理将其传输到后端,后者响应,代理缓存响应并将其发送给客户端。

想象一下后端在其对代理请求的响应中设置了一些与缓存相关的标头。例如:

Cache-Control: no-cache         (or)
Cache-Control: max-age=100000   (or)
Expires: 'Next Friday'
  1. 一个问题是:来自客户端的下一个请求是否会由代理按照该标头处理?

  2. 这个问题的另一种风格:除了它自己的静态资源生命周期设置之外,代理是否有办法了解资源已过时?

  3. 第三种变体:如果代理不认为代理的资源版本过时,客户端是否可以强制代理加载新的资源版本?

我的问题可能看起来有点笼统,不够具体。我将尝试通过使用浏览器 + nginx 代理 + nginx 网络服务器设置来解决这个问题。如果我的设置正常工作,万一某些资源已被代理缓存并且 nginx 的 proxy_cache_valid 超时仍然打开 - 没有什么可以阻止代理提供过时的响应;无论我做什么,请求都不会到达后端。

看起来 nginx 仅根据 proxy_cache_valid 设置来决定缓存是否过时,而后端响应的标头根本不重要。我想知道我的猜测是否正确,以及其他一些 http 代理设置是否不正确,用作反向代理(如 nginx)、办公网络内部代理(如 squid)、互联网公共代理。

4

0 回答 0