引入缓存响应规则
内容提要
Cloudflare推出缓存响应规则,在源服务器响应后、缓存前运行,可修改响应头以提升缓存命中率。支持剥离Set-Cookie、ETag等头,管理缓存标签,调整Cache-Control指令。该规则与请求阶段的缓存规则互补,无需修改源服务器代码,适用于解决缓存失效、CDN迁移等问题,现已对所有用户开放。
延伸解读
响应阶段规则的价值
缓存响应规则在源服务器响应后、缓存前运行,解决了请求阶段无法处理的问题。例如,源服务器返回的Set-Cookie或错误的Cache-Control头可能导致本应缓存的资源无法缓存,而这类问题只能在响应阶段修正。该规则无需修改源服务器代码,即可剥离这些头,提升缓存命中率,降低源站负载和带宽成本。
与缓存规则的互补关系
缓存规则在请求阶段决定是否缓存、缓存键和缓存方式,而缓存响应规则在响应阶段调整缓存方式。两者互补,但响应规则优先级更高。响应规则不能改变缓存键,但可以覆盖缓存规则中的缓存方式,例如设置no-store或剥离Set-Cookie。这种两阶段设计让缓存控制更精细,适应更多场景。
实际应用场景
该规则特别适用于解决缓存失效和CDN迁移问题。例如,剥离静态资源的Set-Cookie可恢复缓存;通过set_cache_tags可将旧CDN的Surrogate-Keys头转换为Cloudflare的Cache-Tag,实现按标签清除缓存。此外,cloudflare_only参数可让Cloudflare和浏览器使用不同的缓存时长,优化缓存策略。
使用注意事项
使用剥离Set-Cookie时需谨慎,仅对不依赖Cookie的静态资源操作,避免影响个性化内容。设置immutable指令时,应仅用于带版本号的文件名,防止浏览器不重新验证。覆盖no-cache时,需确保路径确实静态,否则可能缓存用户特定内容。这些操作需结合具体场景,避免误用。
Q&A
什么是Cloudflare的缓存响应规则?
缓存响应规则是Cloudflare推出的一种新规则类型,它在源服务器响应后、内容被缓存前运行,允许用户修改响应头(如剥离Set-Cookie、ETag等)以提升缓存命中率。
缓存响应规则与缓存规则有什么区别?
缓存规则在请求阶段运行,决定是否缓存、缓存键和缓存方式;缓存响应规则在响应阶段运行,可以调整缓存方式(如修改Cache-Control指令)和是否缓存,但不能改变缓存键。当两者冲突时,缓存响应规则优先。
缓存响应规则能解决哪些常见问题?
它可以解决因源服务器响应头(如Set-Cookie、错误的Cache-Control)导致缓存命中率低的问题,还能在CDN迁移时转换缓存标签,无需修改源服务器代码。
缓存响应规则支持哪些操作?
支持三种操作:剥离破坏缓存的响应头(如Set-Cookie、ETag、Last-Modified)、管理缓存标签(添加、删除、设置)、修改Cache-Control指令(如max-age、s-maxage等)。
如何使用缓存响应规则?
在Cloudflare仪表板的Cache > Cache Rules中创建规则,选择Cache Response Rule,设置名称、表达式和操作。也可以通过API在特定端点配置。
缓存响应规则对所有用户开放吗?
是的,缓存响应规则现已对所有用户开放,所有计划均可使用。