关于 tigris-image-optimization
为使用 Tigris 存储的开发者提供图片缩放、裁剪和优化指南,涵盖上传时处理、响应式图片及 CDN 交付。
主要功能
- 01上传时生成多种尺寸
- 02按请求处理图片变体
- 03客户端上传前缩放
- 04Tigris 公共存储桶 CDN 交付
- 05Next.js、Remix 等框架指南
适用场景
- 01为头像、缩略图和封面生成固定尺寸
- 02按需提供多种图片尺寸
- 03通过公共存储桶分发图片
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tigrisdata/ skills --skill tigris-image-optimization安装后在 Claude Code 中输入/tigris-image-optimization确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonREADME.mdresources/django.mdexpress.mdlaravel.mdnextjs.mdrails.mdremix.md详细介绍
Tigris 图像优化
调整、裁剪和优化存储在 Tigris 中的图像。上传时生成缩略图,提供响应式图像,并利用 Tigris 的全球 CDN 实现快速交付。
策略概览
| 方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 上传时处理 | 缩略图、固定尺寸 | 提供服务速度快、结果可预测 | 每种变体都会产生存储成本 |
| 按请求处理 | 多种尺寸变体 | 灵活、占用存储较少 | 首次请求延迟较高 |
| 客户端调整尺寸 | 上传前 | 节省带宽、上传速度快 | 对质量的控制较弱 |
推荐: 对已知尺寸(头像、缩略图、封面)在上传时处理。使用公共存储桶进行 CDN 交付——Tigris 会自动从最近的全球边缘节点提供公共文件。
上传时处理(通用模式)
文件上传时生成各种变体,并将每种变体存储为单独的对象:
avatars/user-123.jpg # original
avatars/user-123-thumb.jpg # 100x100
avatars/user-123-medium.jpg # 400x400
avatars/user-123-large.jpg # 800x800
需要快速通过 CDN 交付的图像,请使用 access: "public"。
框架指南
阅读适用于你所用框架的资源文件:
- Next.js — 阅读
./resources/nextjs.md,了解 next/image 配置和 Sharp 处理 - Remix — 阅读
./resources/remix.md,了解 action 函数中的 Sharp 处理和响应式 srcset - Express — 阅读
./resources/express.md,了解使用 Multer 的 Sharp 中间件 - Rails — 阅读
./resources/rails.md,了解 Active Storage 变体 - Django — 阅读
./resources/django.md,了解 django-imagekit 和 Pillow 处理 - Laravel — 阅读
./resources/laravel.md,了解 Intervention Image
CDN 交付
Tigris 公共存储桶会从最近的全球边缘节点提供文件——无需单独配置 CDN。
图像的缓存标头:
await put("images/hero.jpg", buffer, {
access: "public",
contentType: "image/jpeg",
});
对于文件名包含内容哈希且不可变的文件(例如 hero-abc123.jpg),请使用较长的缓存时间。对于可变路径,请使用较短的 TTL 或 ETag。
关键规则
始终: 对提供给用户的图像使用 access: "public"(启用 CDN) | 对已知尺寸在上传时生成缩略图 | 使用 WebP/AVIF 减小文件大小 | 设置明确的 contentType
切勿: 在每次请求时处理图像而不进行缓存 | 如果始终提供缩略图,却只存储原图 | 在下载完整尺寸图像后再于浏览器中调整尺寸
相关技能
- tigris-file-uploads — 各框架的完整上传模式
- tigris-egress-optimizer — 降低图像提供服务的带宽成本
官方文档
评论
支持 Markdown