Cloudflare 推出 Cache Response Rules,在源站响应后进一步控制缓存
点击查看原文>
Cloudflare 近日推出缓存响应规则(Cache Response Rules),这是一套新的规则引擎,运行在源站返回响应之后、内容写入 Cloudflare 缓存之前。此前,缓存规则(Cache Rules)只能根据请求属性进行判断;缓存响应规则则新增了一个响应处理阶段,可以在响应进入缓存之前检查源站返回的内容。
根据官方文档,缓存响应规则允许用户修改 Cache-Control 指令、管理 Cache Tag,以及移除 Set-Cookie、ETag 和 Last-Modified 等 Header,而无需修改源站应用本身。
这为缓存行为提供了更细粒度的控制,有助于提高缓存命中率,也能简化 CDN 迁移。
Cloudflare 高级产品经理 Alex Krivit 和前系统工程师 Anthony Turcios 写道:
如果你曾经因为一些本来应该轻松留在缓存中的内容,被一个多余的 Set-Cookie 或错误的 Cache-Control Header 强行拉回源站而感到恼火,那么缓存响应规则正是为解决这个问题而生,而且它恰好在正确的时机发挥作用。

来源:Cloudflare 博客
目前,缓存响应规则支持三类操作:移除影响缓存的 Header、管理 Cache Tag,以及修改 Cache-Control 指令。
缓存决策实际上分为两个阶段。在请求阶段,规则会决定是否查询缓存,以及应该如何查询,然后才会联系源站;新的缓存响应规则在源站返回响应之后运行,让用户可以在内容写入缓存之前,根据响应 Header 调整缓存行为。例如,当访问者请求 /static/app.js 时,Cloudflare 首先检查缓存。如果没有找到该文件,请求就会被转发到源站,由源站返回响应。假设响应 Header 中包含一个 Set-Cookie。Krivit 和 Turcios 解释了其中的问题:
原本应该缓存在每个 Cloudflare 数据中心的静态资源,现在却无法缓存了。如果每个网站的每位访问者都遇到同样一个意外的 Header,最终结果就是缓存命中率不断下降,源站带宽被大量消耗,性能受到影响,基础设施成本也随之上升。
缓存响应规则会在 Cloudflare 收到源站响应之后、将响应写入缓存之前执行。这样,用户无需修改源站应用,就可以调整与缓存相关的 Header、管理 Cache Tag,并移除指定 Header。
此前,Cloudflare 已经提供缓存规则,用于控制 Cloudflare 如何处理进入的请求,以及是否从缓存中读取内容或将内容写入缓存。新的缓存响应规则是在源站返回响应之后执行,可以在响应真正写入缓存之前修改与缓存相关的 Header。Cloudflare 团队强调,两者并不是替代关系,而是互为补充:
缓存响应规则并不会取代缓存规则。缓存规则在请求阶段决定是否缓存、缓存什么,以及如何缓存。缓存响应规则则会在 Cloudflare 看到源站响应之后,在此前不存在的这个处理阶段,对缓存方式和是否缓存做出最终决定。

来源:Cloudflare 博客
Cloudflare 的这一变化也引发了一些讨论。领英用户 Marcella dePunzio 表示:
提升缓存性能往往取决于优化响应行为,而不是增加更多基础设施。让团队能够在边缘侧更灵活地控制缓存策略,可以提高效率、降低源站负载,并简化应用管理,而且无需修改代码。
也有一些从业者对此持保留态度,担心如果工程师错误地将动态内容判断为可缓存内容,强制缓存可能会带来问题。Mission FinOps 创始人 Yuvdeep Singh 则表示:
无需等待应用完成修改,直接在边缘侧修正源站的错误,这是一个很大的优势。
缓存相应规则目前已向所有 Cloudflare 套餐开放。
查看英文原文:Cloudflare Introduces Cache Response Rules for Post-Origin Cache Control
本文来源:InfoQ