Loading...
Loading...
Compare original and translation side by side
| Approach | When to Use | Pros | Cons |
|---|---|---|---|
| Process on upload | Thumbnails, fixed sizes | Fast serving, predictable | Storage cost per variant |
| Process on request | Many size variations | Flexible, less storage | Latency on first request |
| Client-side resize | Before upload | Saves bandwidth, fast upload | Less control over quality |
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 上传时处理 | 缩略图、固定尺寸场景 | 交付速度快,效果可预期 | 每个变体都会产生存储成本 |
| 请求时处理 | 多种尺寸变体场景 | 灵活,存储成本更低 | 首次请求存在延迟 |
| 客户端调整大小 | 上传前处理 | 节省带宽,上传速度快 | 对质量的控制度较低 |
avatars/user-123.jpg # original
avatars/user-123-thumb.jpg # 100x100
avatars/user-123-medium.jpg # 400x400
avatars/user-123-large.jpg # 800x800access: "public"avatars/user-123.jpg # original
avatars/user-123-thumb.jpg # 100x100
avatars/user-123-medium.jpg # 400x400
avatars/user-123-large.jpg # 800x800access: "public"./resources/nextjs.md./resources/remix.md./resources/express.md./resources/rails.md./resources/django.md./resources/laravel.md./resources/nextjs.md./resources/remix.md./resources/express.md./resources/rails.md./resources/django.md./resources/laravel.mdawait put("images/hero.jpg", buffer, {
access: "public",
contentType: "image/jpeg",
});hero-abc123.jpgawait put("images/hero.jpg", buffer, {
access: "public",
contentType: "image/jpeg",
});hero-abc123.jpgaccess: "public"contentTypeaccess: "public"contentType