Полностраничный кэш (Выходной кэш)
Обзор

Настройка полностраничного кэша
Пожалуйста, обратите внимание
Полный кэш страниц по умолчанию отключен, если вы вошли в систему через интерфейс администратора или в случае, если включен режим отладки ('APP_ENV=dev').
Кэш страниц работает только с GET-запросами. Он перехватывает весь ответ (только для фронтенда), включая заголовки, и сохраняет его. Следующий запрос к той же странице (идентификатор строится на основе имени хоста и URI запроса) будет обслужен напрямую из кэша.
Вы можете проверить, была ли страница отдана из кэша, просмотрев заголовки ответа. Если присутствуют заголовки X-Pimcore-Cache-??? (помечено оранжевым цветом ниже), значит, страница загружена из кэша.
Если указано время жизни (lifetime), ответ также будет содержать заголовки Cache-Control и Expires (что полезно для HTTP-акселераторов, таких как Varnish)

Вы можете настроить полноэкранный кэш в config/config.yaml, например:
# config/config.yaml
pimcore:
full_page_cache:
enabled: true
lifetime: 120
exclude_cookie: 'pimcore_admin_sid'
exclude_patterns: '@^/test/de@'
| Опция | Описание |
|---|---|
| Enable | Установите true, чтобы включить кэш страниц. |
| Lifetime | Вы можете дополнительно указать время жизни (в секундах) для всего кэша страниц. Если вы этого не сделаете, кэш будет удален автоматически при внесении изменений во внутренний интерфейс Pimcore. Если у элемента есть срок действия, он остается в кэше, даже если он изменен, до истечения срока действия TTL. Срок действия полезен, если вы внедрили некоторые элементы, которых нет непосредственно в cms, например, rss-каналы или сообщения Twitter через API. Также настоятельно рекомендуется указывать срок службы на веб-сайтах с высокой посещаемостью, чтобы изменения в пользовательском интерфейсе администратора не повлияли на внешний интерфейс (кэши). В противном случае при каждом изменении пользовательского интерфейса администратора весь выходной кэш очищается, что может иметь серьезные последствия для серверной среды. |
| Exclude Patterns | Регулярные выражения (с разделителями) для путей, которые не нужно кэшировать. Несколько паттернов разделяются запятыми. |
| Disable Cookie | Вы можете указать дополнительное имя файла cookie, которое отключает кэширование. Файл cookie "pimcore_admin_sid" (используется для пользовательского интерфейса администратора Pimcore) ВСЕГДА отключает кэширование выходных данных, чтобы облегчить работу редактора ;-) |
Отключение полностраничного кэша в коде
Иногда необходимо отключить кэширование программно (например, если нельзя задать регулярное выражение).
Отключение кэширования через заголовки ответа
Добавление заголовка Cache-Control: no-store к вашему ответу отключит кэш Pimcore, а также кэширование в браузере и промежуточных шлюзах:
<?php
$response->headers->addCacheControlDirective('no-store');
Отключение кэширования через слушатель события
Полный кэш страниц можно отключить с помощью обработчика (event listener) события FullPageCacheEvents::CACHE_RESPONSE:
<?php
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
class DetermineFullPageCacheEventListener
{
#[AsEventListener(\Pimcore\Event\FullPageCacheEvents::CACHE_RESPONSE)]
public function determineFullPageCache(\Pimcore\Event\Cache\FullPage\CacheResponseEvent $event): void
{
$response = $event->getResponse();
if (true) { // Замените на ваше собственное условие
$event->setCache(false);
}
}
}
Полное отключение слушателя полностраничного кэша
Вы можете получить сервис слушателя из контейнера и отключить его, например, в контроллере через DI:
<?php
use Pimcore\Bundle\CoreBundle\EventListener\Frontend\FullPageCacheListener;
public function portalAction(Request $request, FullPageCacheListener $fullPageCacheListener)
{
$fullPageCacheListener->disable('Your disable reason');
return $this->redirect('de');
}
Отключение полного кэша страниц для вашего запросу
Отключение Full Page Cache для одного запроса (только в DEBUG MODE)
Просто добавьте параметр ?pimcore_outputfilters_disabled=true к URL.
Отключение полностраничного кэша с помощью Cookie и закладки (Bookmarklet)
По умолчанию для настройки отключения файлов cookie установлено значение pimcore_admin_sid.
Это означает, что если вы залогинены в админку, вы всегда видите актуальный контент без кэша.
Bookmarklet
Если в конфигурации вашей системы указан файл cookie pimcore_admin_sid, вы можете использовать следующую закладку для отключения полного кэширования страниц без активного сеанса администрирования на другой вкладке. Чтобы воспользоваться закладкой, просто перетащите следующую ссылку на панель инструментов закладок (в любом браузере):
- [Отключить кэш Pimcore](javascript:(function() {document.cookie='pimcore_admin_sid=disablethecachebaby'+(Math.floor(Math.random() * 147483648) + 2000)+';path=/;';})())
- [Включить кэш Pimcore](javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split("; ");for(e=0;e<a.length&&a[e];e++){f++;for(b="."+location.host;b;b=b.replace(/^(?:%5C.|%5C.+)/,"")){for(c=location.pathname;c;c=c.replace(/.$/,"")){document.cookie=(a[e]+"; domain="+b+"; path="+c+"; expires="+new Date((new Date()).getTime()-1e11).toGMTString());}}}alert("Expired "+f+" cookies");})()))
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.