This will need knowledge at the model level of the last modification time. It'd make sense to make the last-modified based on the mod time of the model objects being displayed + configuration + the app start time.
Pages will only change when the content does - new posts, new comments, etc. - and otherwise the site is basically static. I can think of a few ways to improve internal caching:
Remove user/admin-specific UI elements from normal pages, moving them to an entirely-distinct controller. Showing draft posts and spam comments for admins is neat, but I don't actually use it in practice.
Keep an app-scoped cache of page and comment entities
Add in a periodic task to check the backend DB to see if it's changed, to account for replication coming in from Domino
https://abhirockzz.wordpress.com/2016/03/27/efficient-jax-rs-conditional-gets-puts/
This will need knowledge at the model level of the last modification time. It'd make sense to make the last-modified based on the mod time of the model objects being displayed + configuration + the app start time.