Dynamische Inhalte bedeuten in Magento 2 nicht automatisch, dass eine komplette Seite vom Full Page Cache ausgeschlossen werden muss. Genau dafür gibt es Private Content.
Während ein Block mit cacheable=”false” dazu führen kann, dass die gesamte Seite nicht mehr über den Full Page Cache ausgeliefert wird, bleibt die eigentliche Seite bei Private Content weiterhin cachebar, nur einzelne benutzerspezifische Bereiche werden separat geladen und dynamisch ausgegeben.
Typische Beispiele sind der Warenkorb, der Kundenname oder die Wunschliste.
Das Prinzip dahinter ist einfach zu erklären: Cachebarer Inhalt kommt aus dem Full Page Cache, individueller Inhalt wird unabhängig davon nachgeladen.
cacheable=”false” sollte daher nicht “einfach mal so” verwendet werden, nur weil ein einzelner Bereich dynamisch ist. Private Content ermöglicht in vielen Fällen die sauberere Lösung, ohne die Cache Wirkung der gesamten Seite zu verlieren.
Ein einfaches Beispiel ist eine eigene Customer Section. Die PHP Klasse liefert die individuellen Daten:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
namespace Vendor\Module\CustomerData; use Magento\Customer\CustomerData\SectionSourceInterface; class Example implements SectionSourceInterface { public function getSectionData(): array { return [ 'message' => 'Dieser Inhalt ist individuell' ]; } } |
Die Section wird anschließend in der etc/frontend/di.xml registriert:
|
1 2 3 4 5 6 7 |
<type name="Magento\Customer\CustomerData\SectionPoolInterface"> <arguments> <argument name="sectionSourceMap" xsi:type="array"> <item name="example" xsi:type="string">Vendor\Module\CustomerData\Example</item> </argument> </arguments> </type> |
Unter Hyvä stehen die Customer Sections über das Ereignis private-content-loaded zur Verfügung:
|
1 2 3 4 5 6 7 8 |
<div x-data="{ message: '' }" @private-content-loaded.window=" message = $event.detail.data.example?.message || '' " > <span x-text="message"></span> </div> |
Die Seite selbst bleibt dabei im Full Page Cache. Nur die Daten der Customer Section werden unabhängig davon im Browser bereitgestellt und können individuell für den jeweiligen Besucher ausgegeben werden.