网站瘫痪时,如何让 Squid 向客户端发送旧缓存(可能已过期)

网站瘫痪时,如何让 Squid 向客户端发送旧缓存(可能已过期)

我使用 squid 作为代理。但是当网站关闭并且缓存超过 squid.conf 中配置的最大时间时,我可以让 squid 在重新发布之前将旧缓存发送给客户端吗?如果 squid 可以这样做,如何配置?

答案1

您可以使用多个选项 - refresh_pattern、max_stale、refresh_stale_hit、icp_hit_stale

如果您不需要长时间提供陈旧内容,那么您可以只使用 refresh_stale_hit 选项。即:

refresh_stale_hit 1 分钟

这样,仅当对象过期时间少于 1 分钟时,才允许将刷新对象时的并发请求作为缓存命中进行处理。

答案2

squid 2.7 或 > 3.3 将使用 cache-control 标头 stale-while-revalidate 和 stale-if-error

标头('Cache-Control:公共,max-age = 0,s-maxage = 60,stale-while-revalidate = 120,stale-if-error = 600');

意味着:

浏览器不缓存(以避免双重缓存导致奇怪的事情)

鱿鱼缓存 60 秒

在接下来的 120 秒内提供过时的内容并更新缓存(将掩盖刷新缓存内容的延迟)

如果服务器返回错误,则在 10 分钟内提供过时的内容。

相关内容