Workers Cache
2026-07-06 17分钟阅读 今天我们推出Workers Cache:一个分层缓存,位于您的Worker前面,通过一行Wrangler配置和您已知的Cache-Control头进行配置。当启用Workers Cache时,每个对您Worker的可缓存请求首先会击中Cloudflare的缓存。如果有一个新鲜的缓存响应,Cloudflare将直接返回它——您的Worker不会运行,您也不必为此支付CPU时间。如果未命中,则您的Worker运行,并且如果您的响应是可缓存的,Cloudflare将为下一个请求存储它。来自地球任何地方的下一个请求可以直接从缓存中提供。一切都在一个配置块中:{ "name": "my-worker", "main": "src/index.ts", "compatibility_date": "2026-05-01", "cache": { "enabled": true } } 之后,您可以通过在响应中设置头来控制缓存的方式,正如HTTP一贯希望您那样:return new Response(body, { headers: { "Cache-Control": "public, max-age=300, stale-while-revalidate=3600", "Cache-Tag": "products,product:123", } }); 当内容更改时,您的Worker会清除自己的缓存:await ctx.cache.purge({ tags: ["product:123"] }); 这就是整个API。没有需要配置的区域,没有要设置的规则引擎,没有要提供的单独缓存,也没有要登录的第二个产品。Worker的代码就是配置界面,缓存跟随Worker无论它在哪里运行——在自定义域上,在workers.dev上,后台服务绑定,在预览中,在Workers for Platforms租户中。一个Worker,一个缓存,配置一次。这就是表面区域。下面还有很多东西:跨越我们整个网络的分层缓存,全面支持stale-while-revalidate,以便旧响应永远不会阻塞用户,通过Vary进行内容协商,通过ctx.props进行多租户安全的缓存键,通过标签或路径前缀的编程化清除,以及我们认为是最大的解锁部分——一个位于每个Worker入口点前的缓存,而不仅仅是公共的那个,具有每个入口点的缓存控制。最后这一部分意味着您可以将缓存直接组合到您的应用程序结构中:一系列入口点,其中缓存阶段可以根据您的需要插入,由两侧的代码配置。我们将在下面逐步讲解所有内容。Workers Cache今天对任何计划的每个Worker都可用,在Wrangler中启用。这是我们一直希望Workers拥有的缓存API。以下是它为何花费如此之长,因其而变得可能的事情,以及接下来会发生什么的原因。为什么服务器渲染的应用程序需要前面的缓存 2017年我们推出Workers时,推销的重点是您可以在Cloudflare的网络上运行代码,以便在请求到达您的源时进行转换。Worker位于缓存和源前面:这是我们针对的用例的正确模型。如果您想向每个请求添加一个头,重写一个URL,进行A/B拆分,或在请求到达源之前过滤流量,将Worker放在缓存和源之前,可以让您完全控制什么被缓存,什么不被缓存。客户利用它构建了令人难以置信的东西。但是世界发生了变化。Workers不再是一个您附加到源的东西,而是开始成为源。像Astro、TanStack Start、Next.js、Remix和SvelteKit这样的框架都提供了一个Cloudflare适配器,将您的应用程序构建为一个Worker。它们后面没有源。Worker就是服务器。当Worker是源时,原始架构没有任何东西可以缓存。每个请求都会运行您的代码,即使响应与您一秒钟前返回的内容逐字相同。Workers运行时足够快,可以处理每秒数千万的请求,而不会喘口气——但“足够快,以便渲染每个请求”仍然会在每次页面加载上耗费您延迟和每次调用的CPU时间。在服务器渲染的应用程序中,每次页面加载,按定义都是一个渲染。Workers Cache翻转了架构。Cloudflare的缓存现在位于Worker前面:在缓存命中时,您的Worker根本不会运行。Cloudflare返回缓存的响应,而您的CPU计费保持在零。在未命中时,您的Worker运行一次,填充缓存,下一次请求——来自任何地方——都会从缓存中提供,而无需调用您的代码。这就是服务器端渲染在Workers上缺失的。您以前必须在两个不令满意的选项之间选择:在构建时预渲染一切(“静态网站生成”)。快速页面加载,但每次更改都需要完整的重建和重新部署。对于拥有几千个页面的文档网站,这需要5-10分钟。对于大型电子商务网站,更糟——每次您触碰任何内容时,构建都在运行。每次请求渲染每个页面。内容始终最新,但每次页面加载都要支付渲染成本,每个访问者都要支付延迟。Workers Cache给您提供了第三个选项:按需服务器渲染,缓存渲染的响应,以时间到期(TTL)刷新它。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡