CloudFront is good. We use it for large assets. After managing thousands of sites, we realized that it's actually a hassle to manage cache invalidation yourself.
We work with several cloud providers to offer a better experience at the CDN level and manage caches for you. Our CDN also allows proxying end-to-end encrypted connections, so you can use it to host front-end apps and redirect requests to backend servers somewhere else.