É importante entender por que você não deseja armazenar em cache o bloco. Se isso pretende mostrar algumas informações específicas da sessão, você deve procurar
Uma opção não recomendada também pode ser o controlador personalizado, que retorna alguns dados por chamada ajax (com o método POST para que não seja armazenado em cache).
(!) cacheable = "false" não deve ser usado. A seguir, por que não:
Um bloco com cacheable = "false" tornará a página inteira sem cache. Não é usado para perfuração de cache. A página a seguir também diz isso ( Para criar uma página não rastreável , marque qualquer bloco nessa página como não rastreável no layout usando cacheable = "false" ):
O que faz é que os módulos Varnish / Fastly enviarão devido a esse valor de atributo sempre cabeçalhos que não podem ser armazenados em cache.
Quando ativamos o cachable = "false" e, ao usar o Varnish / Fastly, os cabeçalhos do navegador são enviados:
X-Magento-Cache-Debug:MISS
X-Magento-Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Age: 0
Para isso, pode ser depurado o código de cache da página do Magento em
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGenerateXml
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGetOutput
onde o primeiro deve enviar o Cache-Control público com TTL e o segundo deve enviar o X-Magento-Tags para Varnish / Fastly.
Ambos estão usando a verificação isCacheable (), onde sempre retorna FALSE após a verificação seguinte (verifique se no layout atual há algum atributo: cacheable = "false"):
$cacheableXml = !(bool)count($this->getXml()->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
Quando removemos cacheable = "false", começamos a obter as verificações isCacheable () como TRUE e também obtemos os cabeçalhos corretamente nas páginas 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