想象一下,用户在其浏览器中请求page.htm。 它通过互联网传输,其中一个代理服务器(P1)提供缓存版本。 然后,用户刷新页面,另一个请求通过因特网传播并到达代理服务器P2,代理服务器P2提供在不同时刻缓存的文档。 用户看到2个不同的内容。
问题:这可能发生吗?
假设到期策略设置为绝对日期,那就不会发生。 (理论上,因为服务器时钟不一定是同步的)。 但是相对时间窗缓存策略呢?
如果可能发生,你如何解决潜在问题?
答案 0 :(得分:1)
是的,它可能会发生。
有几种方法可以解决它:
按照您的建议设置绝对过期日期。
通过发送Cache-Control: s-maxage=0, proxy-revalidate
来阻止代理的缓存但是,我不确定所有代理都会尊重这一点。
如果您知道即将更改某个页面,请将其缓存TTL调到很短的时间。然后,代理将以较短的间隔重新验证该页面。一旦新页面出来,它应该很快被拿起,你可以将TTL转回更长的时间段。