Ich bin mit einer Situation konfrontiert, in der ich eine bestimmte Ansicht ungültig machen muss, um das Löschen des Caches in dieser Ansicht einzuleiten.
views_invalidate_cache () löscht ALLE zwischengespeicherten Ansichtsdaten für jede Ansicht auf der Site.
Wie kann ich innerhalb meines Modulcodes eine Cache-Ungültigmachung für eine bestimmte Ansicht auslösen?
7
views
caching
performance
sheldonkreger
quelle
quelle
Antworten:
Ich glaube, die Funktion, die Sie suchen, ist cache_flush aus dem Views Cache Plugin.
quelle
cache_flush
ist nur Drupal 6 und 7? Ich sehe es nicht im Views-Modul für Drupal 8.Wenn Sie den Namen der Ansicht kennen, die Sie löschen möchten, können Sie die für diese Ansicht spezifischen Caches löschen, indem Sie eine Funktion wie die folgende aufrufen:
Ich brauchte dies, damit VBO-Aktionen mit Konfigurationsformularen funktionieren können, während das Zwischenspeichern von Ansichten aktiviert ist (ich verwende das Zwischenspeichern von Inhalten). Ich habe dies zweimal aufgerufen, einmal in der Funktion mymodule_myaction_form () und erneut in der Funktion mymodule_myaction_submit ().
quelle
Sie können den Inhaltscache für Ansichten verwenden .
Es wird normalerweise verwendet, um einen Ansichts-Cache automatisch zu löschen, wenn verwandte Inhalte hinzugefügt oder aktualisiert werden. Es bietet jedoch ein Framework zum Überwachen eines Cache-Segments. Ich habe dies nicht getan, aber Entwicklerdokumente sind verfügbar.
quelle
Schauen Sie sich das Projekt Cache-Aktionen an . Es macht genau das, was Sie wollen. Wenn Sie in Ihrer Situation Regeln verwenden können, müssen Sie nicht einmal benutzerdefinierten Code schreiben. Sie können das Modul einfach unverändert verwenden und Regeln einrichten, um die Caches bestimmter Ansichten zu löschen. Andernfalls lesen Sie in den Interna nach, wie es funktioniert, um View-Caches programmgesteuert zu löschen.
quelle
Um Sie nicht zu sehr zu überdenken, aber haben Sie ein Reverse-Proxy-Caching-System wie Lack in Betracht gezogen? Diese Dinge bieten eine unglaubliche Leistung und machen das DB-Caching von Ansichten, Knoten usw. etwas umstritten (es sei denn, Sie haben viele angemeldete Benutzer und benötigen dieses Caching für sie).
quelle