Es ist wichtig zu verstehen, warum Sie Block nicht zwischenspeichern möchten. Wenn dies einige sitzungsspezifische Informationen anzeigen soll, sollten Sie nachsehen
Eine nicht empfohlene Option könnte auch ein benutzerdefinierter Controller sein, der einige Daten über einen Ajax-Aufruf zurückgibt (mit der POST-Methode, damit sie nicht zwischengespeichert werden).
(!) cacheable = "false" darf nicht verwendet werden. Hier folgt, WARUM nicht:
Ein Block mit cacheable = "false" hebt den Cache der gesamten Seite auf. Es wird nicht zum Lochen im Cache verwendet. Dies sagt auch die folgende Seite aus ( Um eine nicht zwischenspeicherbare Seite zu erstellen , markieren Sie einen Block auf dieser Seite im Layout mit cacheable = "false" als nicht zwischenspeicherbar ):
Was es tut, ist, dass Varnish / Fastly-Module aufgrund dieses Attributwerts immer nicht zwischenspeicherbare Header senden.
Wenn wir cachable = "false" aktivieren und Varnish / Fastly verwenden, werden auf der Browserseite folgende Header gesendet:
X-Magento-Cache-Debug:MISS
X-Magento-Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Age: 0
Dafür kann der Seiten-Caching-Code des Magento auf debuggt werden
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGenerateXml
vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php::afterGetOutput
Wobei erstens öffentliches Cache-Control mit TTL und zweitens X-Magento-Tags für Varnish / Fastly gesendet werden sollen.
Beide verwenden die isCacheable () - Prüfung, wobei diese aufgrund der folgenden Prüfung immer FALSE zurückgibt (prüfen Sie, ob im aktuellen Layout Attribute vorhanden sind: cacheable = "false"):
$cacheableXml = !(bool)count($this->getXml()->xpath('//' . Element::TYPE_BLOCK . '[@cacheable="false"]'));
Wenn wir cacheable = "false" entfernen, beginnen wir, isCacheable () -Prüfungen als TRUE abzurufen und die Header auf Start- / Kategorie- / Produktseiten korrekt abzurufen.
X-Magento-Cache-Control:max-age=86400, public, s-maxage=86400
X-Magento-Cache-Debug:HIT
X-Magento-Cache-Hits:1
Age:32