想象一下,我们有http客户端,一些代理和Web服务器作为后端。代理配置为缓存后端的响应。
请求到达,代理将其传输到后端,后者响应,代理缓存响应并将其发送给客户端。
想象一下,后端在响应代理请求时设置了一些与缓存相关的标头。例如:
Cache-Control: no-cache (or)
Cache-Control: max-age=100000 (or)
Expires: 'Next Friday'
问题是:代理是否会按照该标题处理来自客户端的下一个请求?
问题的另一个含义:代理是否有办法了解资源是陈旧的,除了自己的静态资源生命周期设置?
第三种变体:如果代理的代理版本不被代理视为陈旧,客户端是否可以强制代理加载新资源版本?
我的问题可能看起来有点过于笼统,不够具体。我将尝试使用浏览器+ nginx代理+ nginx web-server 设置来解决此问题。如果我的设置正常工作,如果某个资源已被代理缓存,并且nginx的proxy_cache_valid超时仍然有效 - 没有什么可以阻止代理提供过时的响应;无论我做什么,请求都不会打到后端。
看起来nginx只根据proxy_cache_valid设置决定缓存是否过时,后端响应的标头根本不重要。我想知道我的猜测是否正确以及其他一些http代理设置是否可能不正确,作为反向代理,如nginx,办公网络内部代理,如squid,互联网公共代理。