This document contains information about a future release and not the current stable version (3.0).
Be aware that information on this page may change and API's may not be stable for production use.
Cache control
By default, PHP add caching headers that make the page appear "purely dynamic".
This isn't usually appropriate for most sites, even ones that are updated reasonably frequently.
In particular, the default PHP cache-control settings prevent sites from appearing in the internet archive.
SilverStripe overrides the default settings with the following:
Default setting:
- The
Last-Modifieddate is set to be most recent modification date of any database record queried in the generation of the page. - The
Expirydate is set by taking the age of the page and adding that to the current time. Cache-Controlis set tomax-age=86400, must-revalidate- Since a visitor cookie is set, the site won't be cached by proxies
- Ajax requests are never cached.
Overriding these defaults
- HTTP::$cache_age can be used to set the max-age component of the cache-control line, in seconds.
Set it to 0 to disable caching; the "no-cache" clause inCache-ControlandPragmawill be included. - HTTP::register_modification_date() can be used to set the modification date to something more recent than the default.
How it works:
- DataObject::__construct() calls HTTP::register_modification_date() whenever a record comes from the database
Controller::run()calls HTTP::add_cache_headers() before outputting the page

Comments
Comment policy: Please use comments for tips and corrections about the described functionality.
blog comments powered by DisqusComments are moderated, we reserve the right to remove comments that are inappropriate or are no longer relevant. Use the Silverstripe Forum to ask questions.