Wer in Magento 2 eine PHP, XML oder Template Datei ändert und trotz Löschung des Caches weiterhin den alten Stand sieht, hat nicht automatisch an der falschen Stelle gearbeitet. Neben dem Magento Cache können auch generierter Code, statische Dateien, PHP OPcache, Varnish oder ein vorgeschaltetes CDN dafür sorgen, dass Änderungen nicht sofort sichtbar werden.
Bei Templates helfen die Magento Template Hints dabei herauszufinden, welche .phtml Datei und welcher Block tatsächlich für einen Bereich verwendet werden. Einfach den folgenden Befehl im CLI ausführen und das Frontend erneut aufrufen.
|
1 |
bin/magento dev:template-hints:enable |
Bei PHP Klassen ist dev:di:info hilfreich, da Magento damit unter anderem die tatsächlich verwendete Preference und vorhandene Plugins für eine Klasse anzeigt.
|
1 |
bin/magento dev:di:info 'Magento\Catalog\Block\Product\View' |
Bei Änderungen an PHP Klassen, Preferences oder Plugins kann insbesondere im Production Mode außerdem eine erneute Kompilierung notwendig sein.
|
1 |
bin/magento setup:di:compile |
Magento erzeugt dabei unter anderem Proxies, Factories und Interceptor Klassen neu. Wird noch alter generierter Code verwendet, kann sich eine Änderung deshalb trotz geleertem Cache scheinbar nicht auswirken.
Gerade bei Erweiterungen und individuellen Anpassungen kann dadurch schnell auffallen, dass nicht die erwartete Core Klasse ausgeführt wird, sondern eine Preference oder ein Plugin eingreift. Bei Templates kommen zusätzlich Theme Overrides und der Magento Fallback Mechanismus ins Spiel, weshalb ein einfaches bin/magento cache:flush nicht jedes Problem dieser Art lösen kann.
Wenn Änderungen trotz geleertem Cache nicht erscheinen, sollte deshalb zuerst geklärt werden, welcher Code tatsächlich ausgeführt wird und aus welchem Modul oder Theme er stammt.