提供案例
billflare.

Next.js 图片在 Cloudflare 上为什么变贵:改走 /cdn-cgi/image 并让它进缓存

Meathill 解释 OpenNext 上默认 /_next/image 端点为何无法缓存、每次请求都重算,并改用自定义 loader 走 Cloudflare 图片转换,再配一条长缓存规则。

适用产品
WorkersImages
来源
作者经验Meathill 的博客
作者
Meathill(@meathill1)

要点

  • 作者发现 /_next/image 响应没有 Cache-Control、cf-cache-status、ETag 或 Last-Modified,浏览器和 CDN 都会反复请求,每张图都打到 Worker;用 Cache Rules 覆写也不生效。
  • 按 OpenNext 文档的做法:写一个 image-loader.ts 自定义 loader,输出 /cdn-cgi/image/<参数>/<原图>,在 next.config 中设为 loader: "custom"。之后响应头出现 unique_transformations_billing: true,并遵从缓存规则。
  • 随后他为图片路径加一条缓存规则,把边缘和浏览器 TTL 都强制为一年;并提醒边缘缓存按 LRU 淘汰,冷门图片仍可能被挤掉;若完全不能接受重算,可考虑 Cache Reserve。
  • 官方文档(2026-10-14 复核):Images 的唯一转换每个自然月只计一次;Free 含 5,000 次,超出后新转换返回 9422 错误且不收费;Paid 含 5,000 次,之后每 1,000 次 0.50 美元。Cache Reserve 需付费方案,按存储量和 A/B 类操作计费。

原始来源

  1. 发布

    Next.js 图片在 Cloudflare 上为什么变贵:改走 /cdn-cgi/image 并让它进缓存

    打开原始来源

    Meathill 解释 OpenNext 上默认 /_next/image 端点为何无法缓存、每次请求都重算,并改用自定义 loader 走 Cloudflare 图片转换,再配一条长缓存规则。

  2. 作者在 𝕏 分享这篇图片费用文章。

    到 𝕏 阅读

    Meathill

    @meathill1 · 𝕏 原帖

    Next.js <Image> 很好用,但在 Cloudflare Worker + OpenNext,默认图片优化可能悄悄变成“钱包黑洞”。 我帮朋友排查了一次每月近 $100 的账单,最后发现问题藏在 HTTP Header 里。 这篇文章记录了完整排查过程,以及如何用 Cloudflare 原生 Image Resizing + custom loader + 缓存规则,把成本优化下来,把性能提升上去。 https://t.co/3ULkkPFYl0
社区资源Workers +3

Cloudflare Recognizer 用量告警工具

一个开源的 Workers + KV 工具:按 Cron 轮询 Cloudflare 分析数据,按自定义账期对照合同承诺量跟踪用量,并在突增时告警,主要面向 Enterprise 账号。

Workers

王小克:投票页每 3 秒轮询,千刀账单后补充用量明细。

@keking99 最初报告投票页每 3 秒轮询 /api/result 产生约 $1,000 费用。后称截至 10 月 4 日累计用量费为 $816.52,并另提截图合计 $817.14。他后称工单一直被拒。

作者经验Durable Objects +1

没人访问也能烧钱:先查闲置项目的后台任务与存储读写

@An_yhl 看完 @shmily7 的后续,决定翻查试完就扔的 AI 项目:先查后台定时任务与存储读写,不用的停掉而不只是关网页;账单提醒要开,但提醒不会替你停机。