每次缓存过期时填充更多 Clo​​udflare 缓存服务器

Populate More of the Cloudflare Cache Servers Each Time the Cache Expires

背景

我正在使用 Cloudflare 缓存一些动态页面的 HTML(除了典型的静态资源)。我遇到的问题是大部分时间都没有使用缓存,这意味着大多数人的页面速度很慢。您可以通过此 Cloudflare 图表看到这一点:

您可以看到 Cloudflare 只处理了 6.7K 个请求,而源服务器处理了 11.5K 个请求。站点只有几百个页面,所以应该有足够的机会使用缓存。

理论

我的理论是 Cloudflare 有数百台服务器,它只会在请求通过特定服务器时缓存在每台服务器上。假设有 100 台 Cloudflare 服务器。这意味着如果有人访问该站点,他们的响应将仅缓存在 1 台服务器上,而其他 99 台服务器将需要有人通过他们访问该站点才能填充他们的缓存。

问题

我的问题是:是否有任何方法可以在任何 Cloudflare 服务器缓存页面时使用相同的缓存响应填充所有 Cloudflare 服务器?

我们的想法是,这将提高缓存性能,以便为更多人提供页面的缓存版本,而不必等待获取页面的未缓存版本。

虽然 Argo/Tiered 缓存确实改进了一些东西(谢谢,Mark!),但它们并没有让我完全达到我想要的状态。

我发现很多访问者被发送到具有独特查询字符串组合的站点(例如,“utm_source=google”和“gclid=ljslj3j33432”)。

为了解决这个问题,我创建了一个重写规则,当其他特殊查询字符串不存在时忽略这些查询字符串。这要归功于称为转换规则的新功能:https://blog.cloudflare.com/introducing-transform-rules-with-url-rewriting-at-the-edge/

除此之外,我还延长了边缘缓存持续时间 (s-maxage) 和过时重新验证期 (stale-while-revalidate)。

结合所有这些技术,我能够从 Cloudflare 缓存中获得大约 97% 的首次访问。