这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
边缘处理
预生成 vs 边缘处理:一个两难选择
到这一步,“光影”的图片系统有两条路可以走:
路线 A:预生成所有变体
用户上传后,Worker 生成 3 种尺寸 × 2 种格式 = 6 个文件,全部存到 OSS,CDN 只做缓存和分发。
优点:所有文件提前准备好,首次访问也快
缺点:存储成本高、上传处理慢、不够灵活路线 B:边缘按需处理
只存一张原图,用户请求时由 CDN 边缘节点实时裁剪和格式转换。
优点:存储成本低、灵活、上传快
缺点:首次处理有延迟、边缘节点计算资源有限我决定做一个对比实验。
对比实验设计
结果:
=== 存储成本对比 ===
路线 A(预生成): 706 GB, 85 元/月
路线 B(边缘处理): 488 GB, 59 元/月
节省: 31%=== 首次访问延迟对比 ===
路线 A: 80ms
路线 B: 280ms
差异: +200ms=== 综合月度成本对比 ===
路线 A(预生成): 96 元/月
路线 B(边缘处理): 72 元/月
- 存储: 59 元
- CDN: 11 元
- 回源: 0.01 元
- 边缘处理: 0.25 元
边缘处理方案每月省 24 元,而且省了上传处理时间。边缘处理的实现
方案一:Cloudflare Workers
Cloudflare 的边缘计算平台可以在全球 300+ 个节点上运行 JavaScript 代码:
方案二:阿里云 EdgeRoutine + OSS 图片处理
混合策略:最佳实践
实际上,最优方案是混合策略——热门尺寸预生成 + 长尾需求边缘处理:
边缘处理的局限
边缘处理不是万能的。有些操作不适合在边缘节点做:
边缘处理适合的:
✅ 缩放(resize) — 计算量小,速度快
✅ 格式转换(WebP/JPEG)— 常见操作
✅ 质量调整 — 简单参数
✅ 裁剪(crop) — 计算量小
边缘处理不适合的:
❌ 智能压缩(需要 AI 分析)— 计算量大,延迟高
❌ 人脸检测/模糊 — 需要重型模型
❌ 批量处理 — 边缘节点资源有限
❌ 内容审核 — 需要 AI 模型,不适合边缘
❌ 水印添加 — 可以做,但效果不如服务端
这些操作仍然需要在服务端(Worker)预完成。