I would like to cache some semi-static pages with Cloudflare and I was wandering what is the best strategy (for “semi-static page” I mean something that may change sometimes, but not very often),
In particular I have a web app that hosts an online menu for thousands of restaurants. Each restaurant has its own single-page menu, for example:
https://example.com/restaurant1
https://example.com/anotherrestaurant
etc.
A page only changes when:
- a restaurant updates something in their menu
- we release a new version of the web app
I would like to cache those semi-static pages as much as possible in Cloudflare and avoid hitting the server (or in any case reduce its work using revalidation instead of complete responses).
The problem is that an update should appear almost immediately (for example, I cannot cache a page for 1 hour before refreshing it).
SOLUTION 1
Cache-control: public, must-revalidate
Does that mean that Cloudflare will cache the page and use etags for revalidation before returning every request to the browser? Is the right choice for the above scenario?
Can I change it to allow CF to revalidate in background and return the response immediately?
SOLUTION 2
Is there any cache-control directive to cache the pages only in Cloudflare (e.g. for several hours) and not in the browser?
Then I could use the API to invalidate the CF cache whenever an update occurs.
In this way the browsers always requests a fresh copy, Cloudflare returns the response without contacting the origin server and the cache is invalidated immediately from API whenever a change happens.
Is this a wise choice for the scenario above?
What cache-control should I use for this case?
Thanks