Projekt-Cache löschen greift nicht - was tun?

Ü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.