如何无需调用Cloudflare Worker直接从Cloudflare缓存返回响应
问题解决方法
核心原因
你此前配置不生效的根本原因是:默认给域名绑定Worker路由的场景下,Cloudflare的请求处理优先级是 先执行Worker逻辑,再走边缘缓存校验,所以无论缓存是否存在,Worker都会被触发,Page Rules的缓存规则自然无法提前拦截请求。
可落地的两种实现方案
方案1:将Worker配置为独立源站(最稳定,完全适配Page Rules)
这是最符合你需求的方案,完全把Worker当成普通源站处理,所有缓存逻辑和普通源站完全一致:
- 第一步:确认你的Worker已经正常部署,拥有可访问的
xxx.workers.dev域名,且Worker代码内没有强制返回Cache-Control: no-cache、private这类禁止边缘缓存的响应头。 - 第二步:进入你的域名的Cloudflare控制台,找到「源站」-「源站配置」,新增一个源站,源站地址填写Worker的
xxx.workers.dev,协议选择HTTPS,端口填443。 - 第三步:进入「规则」-「转换规则」-「修改请求头」,新增一条规则,匹配你需要走该Worker的路径,添加修改请求头规则,将
Host请求头的值修改为你的Worker的xxx.workers.dev,避免Worker无法识别请求来源。 - 第四步:删除此前绑定的对应路径的Worker路由,保留你原本设置的缓存TTL为1个月的Page Rules即可。
配置完成后,请求会先经过Cloudflare边缘缓存校验:缓存命中直接返回,完全不会触发Worker;只有缓存miss时才会回源请求Worker,生成的响应会按Page Rules的配置缓存1个月,后续请求不会再触达Worker。
方案2:缓存规则配置命中时跳过Worker(无需修改源站配置)
如果你不想调整源站和Worker路由配置,可直接通过缓存规则实现:
- 进入Cloudflare控制台的「缓存」-「缓存规则」,新增一条规则,匹配你需要缓存的路径。
- 在规则配置的「运行时操作」板块,开启 缓存命中时跳过Worker 选项,同时按需求设置缓存TTL、是否忽略源站缓存头等配置。
- 保存规则后即可生效,注意要确保规则优先级高于其他可能冲突的缓存规则。
注意事项
- 两种方案都建议你先在低流量路径测试缓存命中率,确认Worker触发次数符合预期后再全量上线。
- 如果需要自定义缓存键(比如忽略特定请求参数、区分移动端/PC端缓存),直接在缓存规则中配置即可,无需修改Worker代码。
内容的提问来源于stack exchange,提问作者dimention
相关产品推荐
相关产品推荐

