Separate storage from compute
Once uploads live in object storage, the application server becomes disposable. You can rebuild it, resize it or replace it without touching a single image, and a CDN can serve the media from an edge node near each visitor.
Decide what happens to existing URLs
The safest approach is to keep the original upload paths and change only the hostname. Rewrite media URLs to a dedicated subdomain so that cached HTML does not need to change when you swap storage providers later.
- Copy every generated thumbnail size, not just the originals.
- Serve images with long cache headers and a versioned or content-hashed path.
- Set CORS headers if the CDN or an editor will fetch them directly.
- Keep a local backup of the bucket; object storage is durable, not magical.
Plan the exit before you enter
Offloading plugins often rewrite URLs through a filter at render time rather than rewriting the database. That is convenient until you deactivate the plugin and discover your content contains no usable image paths. Export a copy of the original markup, and test a full round trip on a staging site before committing.