Tigris Image Optimization
Resize, crop, and optimize images stored in Tigris. Generate thumbnails on upload, serve responsive images, and leverage Tigris's global CDN for fast delivery.
Strategy Overview
| 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 |
Recommended: Process on upload for known sizes (avatar, thumbnail, cover). Use public buckets for CDN delivery — Tigris serves public files from the nearest global edge automatically.
Upload-Time Processing (General Pattern)
Generate variants when a file is uploaded, store each variant as a separate object:
avatars/user-123.jpg # original
avatars/user-123-thumb.jpg # 100x100
avatars/user-123-medium.jpg # 400x400
avatars/user-123-large.jpg # 800x800
Use
for images that need fast, CDN-backed delivery.
Framework Guides
Read the resource file for your framework:
- Next.js — Read for next/image config and Sharp processing
- Remix — Read for Sharp in action functions and responsive srcset
- Express — Read for Sharp middleware with Multer
- Rails — Read for Active Storage variants
- Django — Read for django-imagekit and Pillow processing
- Laravel — Read for Intervention Image
CDN Delivery
Tigris public buckets serve files from the nearest global edge — no separate CDN setup needed.
Cache headers for images:
typescript
await put("images/hero.jpg", buffer, {
access: "public",
contentType: "image/jpeg",
});
For immutable content-hashed filenames (e.g.,
), use long cache times. For mutable paths, use shorter TTLs or ETags.
Critical Rules
Always: Use
for images served to users (enables CDN) | Generate thumbnails at upload time for known sizes | Use WebP/AVIF for smaller file sizes | Set explicit
Never: Process images on every request without caching | Store only originals if you always serve thumbnails | Resize in the browser after downloading full-size images
Related Skills
- tigris-file-uploads — Full upload patterns per framework
- tigris-egress-optimizer — Reduce bandwidth costs from image serving
Official Documentation