Dies hängt davon ab, was Ihr Modul rendert. Es läuft darauf hinaus,
keine private, kundenspezifische Datenserverseite zu rendern .
Die Ausnahme bilden vollständig nicht zwischengespeicherte Seiten (z. B. das Kundenkonto-Dashboad).
Zusammenfassend denke ich, dass es darauf ankommt, die Modulerstellung mit einer clientseitigen ersten Denkweise anzugehen. Es ist am besten anzunehmen, dass GET- und HEAD-Anforderungen niemals Magento erreichen werden. Daher ist es kein guter Ansatz, sich nur für Anpassungen auf Plugins oder Beobachter oder andere serverseitige Tools zu verlassen.
Einige Details, nach denen ich suchen würde, um zu überprüfen, ob ein Modul mit Varnish gut funktioniert:
Wenn die isPrivateScope()
Blockmethode true zurückgibt, können private Daten gerendert werden, jedoch nur während der Ajax-Anforderung und nicht während des regulären Seiten-Renderings.
Andernfalls werden die privaten Daten im Ganzseiten-Cache gespeichert.
Der richtige Weg, um private Daten zu rendern, ist die Verwendung des clientseitigen Renderns mit den customer-data
Modulen für private Inhalte, für die das Modul erforderlich ist Mage_Customer
.
Dies kann mithilfe einer UI-Komponente oder eines regulären benutzerdefinierten Anforderungsmoduls erfolgen.
Wie das geht, ist nicht Teil der Frage, daher werde ich hier nicht auf Details eingehen.
Die Implementierung von IdentityInterface
ist nur wichtig, damit der Cache zum richtigen Zeitpunkt geleert wird. Je nachdem, was Ihr Modul rendert, ist dies möglicherweise nicht einmal erforderlich.
Eine andere Sache, die ich für wichtig halte, damit ein Modul lackkompatibel ist, ist cacheable="false"
, keiner vorhandenen Seite einen Block hinzuzufügen . Das Hinzufügen neuer nicht zwischengespeicherter Seiten kann je nach Seitentyp in Ordnung sein.