Важно понимать, почему вы не хотите кешировать блоки. Если это предназначено для отображения некоторой информации, относящейся к сессии, то вам следует изучить
Одной из не рекомендуемых опций может быть также пользовательский контроллер, который возвращает некоторые данные через ajax-вызов (с POST-методом, чтобы он не кэшировался).
(!) cacheable = "false" не должен использоваться. Здесь будет следовать, почему нет:
Блок с cacheable = "false" сделает всю страницу не кешированной. Он не используется для пробивки кеша. Также следующая страница говорит следующее ( Чтобы создать не кэшируемую страницу , пометьте любой блок на этой странице как не кэшируемый в макете, используя cacheable = "false" ):
Что он делает, так это то, что модули Varnish / Fastly будут отправлять из-за этого значения атрибута всегда не кешируемые заголовки.
Когда мы включаем cachable = "false" и при использовании Varnish / Fastly, на стороне браузера отправляются следующие заголовки:
X-Magento-Cache-Debug:MISS
X-Magento-Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Age: 0
Для этого можно отладить код кэширования страницы Magento на
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGenerateXml
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGetOutput
где первый должен отправить публичный Cache-Control с TTL, а второй должен отправить X-Magento-теги для Varnish / Fastly.
Оба используют проверку isCacheable (), где это всегда возвращает FALSE из-за следующей проверки (проверьте, есть ли в текущем макете какие-либо атрибуты: cacheable = "false"):
$cacheableXml = !(bool)count($this->getXml()->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
Когда мы удаляем cacheable = "false", мы начинаем получать проверки isCacheable () как TRUE, а также правильно получать заголовки на страницах start / category- / productpages.
X-Magento-Cache-Control:max-age=86400, public, s-maxage=86400
X-Magento-Cache-Debug:HIT
X-Magento-Cache-Hits:1
Age:32