本节介绍 Images 的限制和支持格式。
使用 Images 进行优化时,请注意以下限制。
在 Enterprise 计划中,您可以联系我们的账户团队,确保限制符合您的需求。
以下限制适用于转换存储在 Images 之外的远程图像:
| 属性 | 限制 |
|---|---|
| 图像文件大小 | 100 MB |
| 图像面积(不包括动画 GIF) | 100 MP(例如 10,000x10,000 像素) |
| 动画 GIF 的图像面积 | 100 MP* |
| 图像尺寸(不包括 WebP 和 AVIF) | 12,000 像素 |
| 图像尺寸,AVIF | 1,200 像素 |
以下限制适用于上传到 Images 存储:
| 属性 | 限制 |
|---|---|
| 图像文件大小 | 10 MB |
| 图像面积(不包括动画 GIF) | 100 MP(例如 10,000x10,000 像素) |
| 图像面积,动画 GIF | 100 MP* |
| 图像尺寸(不包括 WebP 和 AVIF) | 12,000 像素 |
| 图像尺寸,AVIF | 1,200 像素 |
| 图像元数据 | 1024 字节 |
GIF/WebP 动画限制为所有帧的总兆像素,或所有帧面积之和。例如,尺寸为 500x500、共 10 帧的 GIF 图像面积为 2,500,000 像素或 2.5 兆像素。
交付动画 GIF/WebP 动画的限制为 100 兆像素。但是,超过 50 兆像素的动画将在不应用任何转换的情况下交付。
提供动画时,我们建议使用 MP4 和 WebM 等视频格式以获得最佳性能。由于 GIF 格式的压缩效率较低,高分辨率动画通常文件较大,压缩时间更长。
要优化远程视频,您可以使用媒体转换。
使用 Images 绑定 进行优化时,.input() 的最大输入大小为 20 MB。
Images 支持多种输入格式,适用于远程和托管图像:
- PNG
- JPEG
- GIF(包括动画)
- WebP(包括动画)
- SVG
- AVIF*
- HEIC
*适用于 Enterprise 计划。
您可以使用以下输出格式提供图像:
- PNG
- JPEG
- GIF(包括动画)
- WebP(包括动画)
- SVG
- AVIF
在检测请求浏览器的最优输出格式时,Cloudflare 会平衡生成图像的时间与向浏览器提供图像的时间。
特别是,AVIF 编码可能比编码为其他格式慢一个数量级。如果图像太大而无法快速编码为 AVIF,则 Cloudflare 将回退到 WebP 或 JPEG。
转码为 JPEG 时,Cloudflare 以交错渐进式 JPEG 格式生成图像。
您可以使用 format 参数指定应使用渐进式还是基线 JPEG。
但是,在以下任一情况下,我们始终会回退到基线 JPEG 格式——即使指定了渐进式 JPEG:
- 输出图像面积尺寸小于 50x50。
- 输出图像面积尺寸大于 3000x3000。
Cloudflare 不会调整 SVG 文件大小,并将忽略任何优化参数。
如果您存储在 Images 中,则可以使用任何预定义变体作为占位符来交付经过净化的 SVG。例如,应用默认 public 变体允许交付 SVG 而无需调整大小或裁剪:
imagedelivery.net/account_hash/svg_id/public
同样,您可以使用 Images 提供存储在您自己的源站(例如 R2)中的经过净化的 SVG。
提供 SVG 文件时,会使用 svg-hush ↗ 进行净化,这是 Cloudflare 开发的开源工具,使 SVG 尽可能安全。它以流式方式处理文件而不缓冲,使我们能够即时快速过滤。SVG 文件是 XML 文档,可能包含链接或 JavaScript 功能,可能带来安全隐患。
svg-hush 工具过滤 SVG 并移除潜在风险功能,例如:
- 脚本。 我们防止 SVG 被用于跨站脚本攻击。虽然浏览器不允许在
<img>标签中使用脚本,但在 SVG 作为顶级文档直接打开时允许脚本。 - 指向其他文档的超链接。 移除超链接使 SVG 文件对 SEO 垃圾邮件和网络钓鱼的吸引力降低。
- 跨源资源引用。 我们阻止第三方 跟踪谁在查看图像。