All GET requests can be cached except for
/ghost/*. Images can be cached for as long as you want, they won’t be changed by Ghost unless you manually edit image files on the server. For non-image pages/assets the cache policy depends on the site, you’d need to choose something that works for your use cases.
If you’re treating query params as non-unique assets then you’ll need an exception for
?v= query param so that cache-busting for theme assets works.
If you’re using members than you’ll want to skip caching for any requests with a
Depending on your cache/cdn setup you could use the “Site changed” webhook to hit an endpoint that clears the cache each time a site content change is made.