Важливо зрозуміти, чому ви не хочете кешувати блок. Якщо це означає, щоб показати певну інформацію про сеанс, то вам слід вивчити
Одним із нерекомендованих варіантів може бути також користувацький контролер, який повертає деякі дані через ajax-call (з методом POST, щоб він не був кешований).
(!) cacheable = "false" не слід використовувати. Тут буде далі, ЧОМУ ні:
Блок з кешованим = "помилковим" зробить всю сторінку без кешування. Він не використовується для пробивання отворів кешу. Наступна сторінка говорить про це ( Щоб створити сторінку , яку не можна кешувати , позначте будь-який блок на цій сторінці як неможливий керування в макеті, використовуючи cacheable = "false" ):
Це означає, що модулі Varnish / Fast будуть надсилати через це значення атрибутів завжди не кешовані заголовки.
Коли ми вмикаємо 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
де перший повинен надіслати загальнодоступний кеш-контроль за допомогою TTL, а другий - надіслати X-Magento-теги для лаку / швидко.
Обидва використовують прапорець isCacheable (), де це завжди повертає FALSE за допомогою наступної перевірки (перевірити, чи є в поточному макеті якісь атрибути: cacheable = "false"):
$cacheableXml = !(bool)count($this->getXml()->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
Коли ми видаляємо cacheable = "false", тоді ми починаємо отримувати чеки isCacheable () як TRUE, а також отримуємо заголовки правильно на сторінках start- / category- / product.
X-Magento-Cache-Control:max-age=86400, public, s-maxage=86400
X-Magento-Cache-Debug:HIT
X-Magento-Cache-Hits:1
Age:32