Asset delivery settings should point built public assets at the CDN without sending private application responses into a shared cache.
Hashed builds first
Set ASSET_URL to the Cloud CDN hostname after origin pull works for public/build. Fingerprinted Vite or Mix files get a long TTL. mix-manifest and unhashed HTML still purge on deploy if you cache them.
Session Blade, CSRF forms and dashboards stay on Laravel.
The delivery model
Laravel CDN ASSET_URL
- 01BuildProduce versioned assets with the application’s bundler.
- 02PublishUpload the exact files referenced by the manifest.
- 03ReferenceVerify the generated URLs and cross-origin behavior.
Serving public/storage
Map the public disk to Cloud CDN. Transform images at the edge when listings need extra sizes. Keep signed private files on origin URLs.
Marketing pages versus the app
Anonymous landing pages can be cached as HTML. The authenticated application should not. Split by path instead of hoping a single policy fits both.
Forge, Vapor and containers
Cloud CDN sits in front of whichever origin those platforms expose. The distribution does not care whether PHP runs in a container or on a VM.
Validate before production
Inspect the deployed HTML rather than relying on an environment variable alone. Confirm the Vite or Mix integration for your installed version, then request every referenced asset. Keep private storage behind an authorization check.
- Record the configuration and expected result before changing traffic.
- Keep evidence of the test and a working rollback for the previous behavior.



