The cheapest real performance win for an image heavy site is also the one most people skip: stop serving your static files from the same server and domain as your pages. I moved my images off years ago and the page got faster for two distinct reasons, and both of them still hold no matter which provider you pick today.

At the time I used Rackspace CloudFiles. You created containers, the same idea as Amazon S3 buckets, uploaded your files, ticked a box to expose a container on the CDN, and copied out the URLs. The mechanics are identical everywhere now, whether you end up on S3 with CloudFront, on Cloudflare R2, on Bunny, or on whatever is cheapest the year you read this. The provider is a detail. The two reasons it speeds things up are not.

The first is parallelism. A browser caps how many connections it will open to a single hostname, so your images queue up behind each other and behind the rest of your page. Move them to a separate CDN domain and they become requests the browser can pull in parallel against a different host. The second is proximity. A CDN serves each file from an edge node near the visitor rather than from your one origin, so the bytes travel a short distance to someone in Sydney instead of crossing an ocean from a box in Texas.

A word on the "cheap" in the title, because I was smug about it the first time and got corrected. For a while Rackspace billed me nothing and I assumed CDN delivery was effectively free. Then the invoices started, somewhere under a dollar a month for well under a gig. Still cheap, but not free, and that is the honest version. Real traffic puts you at cents to low dollars per gigabyte, which is nothing measured against the load time and the origin bandwidth you stop paying for.