Projekt-Cache löschen greift nicht - was tun?
Veröffentlichungsdatum: 10. Oktober 2018
Änderungsdatum: 26. Februar 2021
weblication cms projekt cache löschen ereignisse async
Über Projektereignisse wird bei bestimmten Aktionen (z.B. Speichern, Hochladen, etc.) der Projekt-Cache gelöscht, um sicherzustellen, daß die Informationen im Projekt-Cache neu generiert werden und aktuell sind.
Der Aufruf der Funktion über das Projektereignis erfolgt in aktuellen CMS-Versionen standardmässig über einen asynchronen Aufruf über PHP. Die Aktion (z.B. Speichern einer Seite) muss somit nicht warten, bis die andere Aktion (Projekt-Cache löschen) abgeschlossen ist, was mehr Performance bedeutet.
Sofern ein Webserver asynchrone Aufrufe via PHP nicht unterstützt (ab CMS 13.x in den Weblication® Serverinformationen ersichtlich), funktionieren Aufrufe über Ereignisse (wie z.B. Projekt-Cache löschen, URL dem Suchindex hinzufügen (addUrlToIndex), etc.) nicht. Geben Sie in diesen Fällen der Funktion den entsprechenden Parameter mit, welcher den Aufruf nicht asynchron vornimmt.
Beispiel: Auszug aus dem Verzeichnisereignis onAfterSaveFile der Projektereignisse
// ...
$wSearch->addUrlToIndex($eventData['filePath'], false);
//...
wCache::clearCacheProject($eventData['projectPath'], array('allowAsync' => false));In den weiterführenden Links finden Sie zudem im Artikel zu "Asynchrone Aufrufe" weitere Lösungsmöglichkeiten.
FAQs
- Warum wird der Projekt-Cache bei bestimmten Aktionen gelöscht?
- Der Projekt-Cache wird bei Aktionen wie Speichern oder Hochladen gelöscht, damit die im Projekt-Cache gespeicherten Informationen neu generiert werden und aktuell sind.
- Wie läuft das Löschen des Projekt-Caches in aktuellen CMS-Versionen ab?
- In aktuellen CMS-Versionen erfolgt der Aufruf über Projektereignisse standardmäßig per asynchronem Aufruf über PHP. Dadurch muss die Aktion (z.B. Speichern einer Seite) nicht warten, bis das Löschen des Projekt-Caches abgeschlossen ist, was die Performance verbessert.
- Wann funktioniert der asynchrone Projekt-Cache-Löschmechanismus nicht?
- Wenn ein Webserver asynchrone Aufrufe via PHP nicht unterstützt (Hinweis: ab CMS 13.x ist dies in der Weblication® ersichtlich), dann funktionieren Ereignisaufrufe wie „Projekt-Cache löschen“ oder „URL dem Suchindex hinzufügen (addUrlToIndex)“ nicht.
- Was kann ich tun, wenn der Projekt-Cache über Projektereignisse nicht gelöscht wird?
- Statt des asynchronen Aufrufs sollte die Funktion mit einem Parameter verwendet werden, der den Aufruf nicht asynchron vornimmt. Im Beispiel wird dafür der Parameter <code class="codeInline">allowAsync</code> auf <code class="codeInline">false</code> gesetzt.
- Wie sieht ein Beispiel für einen nicht-asynchronen Aufruf aus?
- Beispiel (Auszug): - Für den Suchindex: <code class="codeInline">$wSearch->addUrlToIndex($eventData['filePath'], false);</code> - Für den Projekt-Cache: <code class="codeInline">wCache::clearCacheProject($eventData['projectPath'], array('allowAsync' => false));</code> Damit wird der Aufruf explizit so konfiguriert, dass er nicht asynchron läuft.
- Wo finde ich weitere Lösungsmöglichkeiten?
- In den weiterführenden Links gibt es zusätzlich einen Artikel zum Thema „Asynchrone Aufrufe“, in dem weitere Lösungsmöglichkeiten beschrieben werden.