Purpose::
Project images load fast and cheap from a CDN; the app server serves zero image bytes.
Rules::
- Originals stay local; only compressed WebP copies go up
- One storage zone and one pull zone per project
- No images in the public folder, no proxy routes, no paid image optimizing
Inventory::
- A CDN with storage (Bunny, Cloudflare R2 or similar) and its API key
- Your image folder
Steps::
- 1Create the storage and pull zone named after the project
- 2Convert images to WebP (plus thumbnails if needed) and upload; skip files already there
- 3Write a manifest JSON (url, size, thumb) the site reads
- 4Allow the CDN host in the framework's image settings; turn off server optimizing
- 5Check one URL answers 200 image/webp
- 6Reply in one line: files uploaded, MB stored, sample URL
Metrics::
- Every image URL answers from the CDN
- Re-running uploads nothing twice