Full Page Cache (Output Cache)
Configure the Full Page Cache
The full page cache is disabled by default if you're logged in in the admin interface or in the case the debug mode ('APP_ENV=dev') is on.
The full page cache only works with GET request, it takes the whole response (only for the frontend) including the headers from a request and stores it into the cache. The next request to the same page (hostname and request-uri are used to build the checksum/hash identifier) will be served directly by the cache.
You can check if a request is served by the cache or not checking the response headers of the request. If there are X-Pimcore-Cache-??? (marked orange below) headers in the response they the page is coming directly from the cache, otherwise not.
If you have specified a lifetime, the response also contains the Cache-Control and the Expires header (perfect for HTTP accelerators like Varnish, ... ).
You can configure full page cache in
config/config.yaml, as in e.g.:
# config/config.yaml pimcore: full_page_cache: enabled: true lifetime: 120 exclude_cookie: 'pimcore_admin_sid' exclude_patterns: '@^/test/de@'
|Enable||Set to true to enable to full page cache.|
|Lifetime||You can optionally define a lifetime (in seconds) for the full page cache. If you don't do, the cache is evicted automatically when there is a modification in the Pimcore Backend UI. If there is a lifetime the item stays in the cache even when it is changed until the TTL is over. The lifetime is useful if you have embedded some items which are not directly in the cms, like rss feeds, or twitter messages over the API. It is also highly recommended to specify a lifetime on high traffic websites so that the frontend (caches) isn't affected by changes in the admin-UI. Otherwise on every change in the admin-UI the whole output-cache is flushed, what can have drastic effects to the server environment.|
|Exclude Patterns||You can define some exclude patterns where the cache doesn't affect. The patterns have to be valid regular expressions (including delimiters). Type one pattern in each line.|
|Disable Cookie||You can define an additional cookie-name which disables the cache. The cookie "pimcore_admin_sid" (used for the Pimcore admin UI) ALWAYS disables the output-cache to make editor's life easier ;-)|
Disable the Full Page Cache in your Code
Sometimes it is more useful to deactivate the full page cache directly in the code, for example when it's not possible to define an exclude-regex, or for similar reasons.
In this case you can use obtain the pull page cache service from the container and disable it, eg. in an action:
<?php $this->get(\Pimcore\Bundle\CoreBundle\EventListener\Frontend\FullPageCacheListener::class)->disable("Your disable reason");
Disable the Full Page Cache for a Single Request (only in DEBUG MODE)
Just add the parameter
?pimcore_outputfilters_disabled=true to the URL.
Disable the Full Page Cache with a Cookie and a Bookmarklet
Per default the disable-cookie configuration is set to
That means that if your're logged into Pimcore (have a session-id cookie) you will always get the content live and not from the cache.
If you have the cookie
pimcore_admin_sid in your system configuration you can use the following
bookmarklet to disable the full page cache without having an active admin session in an other tab.
To use the bookmarklet, just drag the following Link into your bookmark toolbar (any browser):