参照官方手册结构整理(数据截至 2026-10,配额/价格以官方最新页面为准)。技术术语保留英文原词。
1. 概述
Cloudflare Images 是托管的图像处理管线:在边缘实时缩放、优化、转换图像,按设备/浏览器实时输出最优版本,无需手动维护多种尺寸副本。
一句话定位:边缘图像处理——实时缩放/优化,可按需选用自带存储或托管存储。
Free 与 Paid 套餐均可用。
2. 核心概念
- 两条路径:Transform remote(自带存储,如 R2) 只做优化转换;Host in Images(托管) 负责上传、存储、优化、分发全流程。
- Unique transformations(唯一转换):源图 + 参数组合算一次;
format/quality不计入唯一性;同月重复请求只计一次。 - Variants(预设变体):为托管图预定义尺寸/裁剪(如
thumbnail100×100、hero1600×500)。 - URL interface:
https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE>。 - Workers binding:在代码里编程式转换(自定义顺序、自定义 URL、内容协商)。
- Direct Creator Upload:免 token 让用户直接上传。
3. 架构与工作原理
请求带参数到达边缘 → 从源站(或 Images 存储)取原图并缓存 → 实时缩放/格式转换(AVIF/WebP 等)→ 返回最优图。优化图遵循与原图相同的缓存规则,且最小缓存 1 小时;多次不同尺寸请求会复用已缓存的原图,避免重复回源。
4. 快速开始
URL 方式(转换存储在 R2 / 自有源的图片):
https://yuebin.uk/cdn-cgi/image/width=800,format=auto/https://r2.example.com/photo.jpg
Workers binding 方式:
// 上传到 Images 托管存储
await env.IMAGES.put("photo-id", imageData);
// 转换外部存储的图(计 Transformations)
const url = `https://${env.ZONE}/cdn-cgi/image/width=400,format=auto/${source}`;
5. 配额与限制
| 限制项 | 说明 |
|---|---|
| Free 计划唯一转换数 | 5,000 次/月(超出后已缓存照常服务,新转换返回 9422 错误,不收费) |
| 输出格式 | auto、avif、webp、jpeg、baseline-jpeg、json |
dpr 最大值 |
2 |
| AI 放大(upscale)上限 | 4× |
| 优化图最小缓存 | 1 小时 |
| 推荐显示尺寸 | 桌面 ≤1920px、平板 ≤960px、手机 ≤640px(推荐值,非硬限) |
源图文件大小与最大像素尺寸以官方最新文档为准(官方对单张源图有上限,上传前建议确认)。
6. 定价
| 计费项 | 价格 |
|---|---|
| Free:唯一转换 | 含 5,000 次/月 |
| Transformations(Paid) | 前 5,000 次免费,超出 $0.50 / 1,000 次 |
| Images Stored(仅 Paid) | $5 / 100,000 张/月 |
| Images Delivered(仅 Paid,托管图) | $1 / 100,000 次分发 |
| 转换外部存储(如 R2)的图片 | 仅计 Transformations |
- 只有 HTTP
200且 >1,024 字节的托管图分发才计入 Delivered。 - 用 R2 存图 + Images 做转换,通常是最经济的图像方案。
7. 最佳实践
- 大量图片场景:用 R2 存储 + Images 转换,只付存储与转换费,省下 Delivered 费用。
- 用
srcset+dpr做响应式图片,避免手工维护多副本。 - 设置 Variants 统一托管图的输出规格。
format=auto自动选 AVIF/WebP,显著减小体积、提升加载速度。
8. 适用场景与选型
- 需要处理用户上传图片、做缩略图/响应式输出 → Images。
- 只是想给 R2/S3 上的图做边缘优化 → 用 Images 的 Transform(Free 即可)。
- 区别:R2 是通用对象存储(不分图像语义),Images 是图像专用管线(优化/变体/分发)。yuebin 用 R2 存媒体原图,可叠加 Images 做实时优化。