如何在没有“第一个用户”的情况下为某些页面创建 Varnish 缓存对象?

如何在没有“第一个用户”的情况下为某些页面创建 Varnish 缓存对象?

我们有一些页面需要很长时间才能加载,而且访问频率不高。如果我们set beresp.ttl = 5d;在 .vcl 文件中为这些页面设置,我们如何才能强制使用新的缓存对象,以便当用户在 20 天后访问该页面时不会动态创建该对象?

换句话说,如果 varnish 本身可以做到这一点,我想缓存一组没有“第一个用户”的页面。否则,我想我们只需运行一个访问每个页面的脚本即可。

答案1

Varnish 没有内置缓存预热功能。但是,您可以扫描站点地图或创建重要页面列表,并每天在 cronjob 中调用这些页面,确保这些对象在需要时位于缓存中。

当然,正如您所说,TTL 需要足够高才能保留这些物体。

您还可以通过 将宽限期值设置得非常高set beresp.grace=1y;,这样只要还有宽限期,Varnish 就会异步获取最新版本,同时提供过期内容。

Grace 将消除重新验证的痛苦,但是在利用 Grace 之前,对象首先需要位于缓存中。

相关内容