Eigenartiges Caching-Problem - tpl.php Datei wird verzögert übernommen
am 18.09.2016 - 20:45 Uhr in
Bei einem Upgrade eines Drupal 6 - Projektes nach Drupal 7 müssen auch die Template-Dateien (z. Bsp. node--inhaltstyp1.tpl.php) umgeschrieben werden, weil sie PHP-Code enthalten, der an Drupal 7 angepasst werden muss.
Sämtliches Caching ist unter admin/config/development/performance ausgeschaltet.
Entwickelt wird auf localhost (hier mittels XAMPP Webserverumgebung)
Schreibe ich in der node--inhaltstyp1.tpl.php eine Zeile PHP-Code um und lade die Node-Seite im Browser neu, wird dies nicht erkannt. Ich kann die Seite auch mehrmals neu laden oder in der ULR am Ende ein /? hinzufügen, nützt nichts.
Ich kann den gesamten Drupal-Cache löschen, nützt nichts. Ladet man die Seite im Browser neu, wird die Änderung NICHT erkannt.
Erst nach einiger Zeit, z. Bsp. 15, 20 oder 40 Sekunden, ist plötzlich die Änderung da. Alles manuelle nachhelfen (Cache löschen usw) hilft nichts. Das ist umständlich, so kann man keine 5 Zeilen Code schreiben, da man ewig rumprobieren, neu laden und warten muss.
Was anscheinend auch hilft, ist, Apache neu zu starten.
Bei Änderungen in der Datei style.css gibt es diese Problem nicht (wird sofort übernommen).
Woran könnte das liegen?
Liegt es an Drupal oder am Apache? Welche Änderung kann helfen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Template hat einen besonderen Cache
am 18.09.2016 - 23:02 Uhr
Der Template-Cache wie auch das Caching der hook_menu-Pfade werden werden nicht über die normale Cache-Entleerung erfasst. Das hat wohl etwas mit der Performance zu tun, da Page Caches usw. relativ häufig gelöscht werden.
Einige Module (ich glaube auch "devel") und Basis-Templates (z.B. Zen) bringen zum permanenten Rebuild des Template-Caches Einstellungen mit. Auch über Drush kann dieser Cache nach Template-Änderungen gelöscht werden. Man kann auch im der template.php eine spezielle Funktion einbinden (die ich aber gerade nicht parat habe). Das ist nützlich in der Programmier-Phase. Aber man sollte auf jeden Fall nicht vergessen einen auf welchem Weg auch immer erzwungenes, permanentes Template Rebuild wieder zu deaktivieren im Produktiv-Betrieb, da dies das System drastisch ausbremst.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Alle Methoden schlagen fehl - Problem bei Webserver?
am 19.09.2016 - 11:39 Uhr
Hallo,
danke für die Antwort.
Habe das Modul Administration menu installiert. Damit kann man den Cache löschen (einzeln oder alle Cache-Zwischenspeicher usw).
Aber auch damit funktioniert es nicht, egal ob alle Zwischenspeicher oder "Seite und Sonstiges" oder "Theme-Registry" gelöscht wird. Immer das gleiche Verhalten:
Nach dem Löschen wird die Änderungen, welche zuvor in der tpl.php-Datei gemacht wurde, nicht übernommen. Man kann mehrmals, bis zu 5 oder zehnmal den Cache löschen auf verschiedene Arten, die Änderungen erscheinen NICHT.
Wartet man allerdings so ca. eine halbe Minute (mehr oder weniger), dann erscheinen plötzlich die Änderungen zeitverzögert und alle in dieser Zeit druchführen Cache-Löschungen und Reloads usw. haben nichts gebracht!
Und zusätzlich habe ich auch noch in der betroffenen node--inhaltstyp1.tpl.php ganz oben den Befehl
drupal_theme_rebuild();
eingebaut, welcher immer aufgerufen wird. Klappt so auch nicht.
Wahrscheinlich muss drupal_theme_rebuild(); in die template.php eingebaut werden, aber wie genau geht es in Drupal 7?
Nachdem aber die gesamte Cache-Löscherei mit dem Administration menu Modul nicht klappt, könnte das Problem nicht vielleicht bei Apache liegen? Zeitverzögert um ca. eine halbe Minute erscheinen die Änderungen ja.
opcache.enable = 0 - Problem selbst gelöst
am 20.09.2016 - 10:44 Uhr
Problem selbst gelöst:
"PHP OPcode caching" ausgeschaltet und jetzt ist das Problem gelöst. Man kann wieder normal entwickeln, macht man eine Änderung in node--inhaltstyp1.tpl.php wird diese Änderung sofort übernommen, keine zeitlichen Verzögerungen mehr.
Drupal 8 empfiehlt (Statusbericht):
PHP OPcode caching can improve your site's performance considerably. It is highly recommended to have OPcache installed on your server.
Das war der Grund, warum OPCaching aktiviert war. Aber dass es solche Probleme macht, davon 'hat keiner was gesagt'.