it-swarm.com.de

Löschen Sie eine einzelne URL aus dem Cache

Gibt es unter Verwendung des Standard-Cache-Systems von Drupal eine Möglichkeit, den Cache für einen Knoten oder eine URL zu löschen, ohne den gesamten Cache zu löschen (was die gesamte Site verlangsamt)?

9
JM01

Das Modul Cache-Aktionen bietet eine sehr fein abgestimmte Kontrolle über das Löschen des Caches.

Ob es Ihr genaues Problem löst, hängt leider davon ab, wie diese bestimmte URL aufgebaut ist. Falls es nicht genau das tut, was Sie wollen, ist die Codebasis immer noch ein hervorragender Start, um genau das zu erstellen, was Sie brauchen.

6
Letharion

Ja, Sie können dies auch programmgesteuert tun.

In diesem Beispiel leeren wir den Startseiten-Cache:

$url = url('<front>',  array('absolute' => TRUE));

cache_clear_all($url, 'cache_page');

Drupal speichert die Pfade als CID in der Tabelle. Im obigen Beispiel geben wir die URL der Startseite als CID als erstes Argument in der Funktion an. Wenn Sie die CID definieren, müssen Sie das zweite Argument $ bin in der Funktion definieren B. aus welcher Tabelle Sie den Cache löschen möchten. Da wir eine einzelne Seite löschen müssen, ist sie in cache_page vorhanden, die den Cache für Seiten enthält.

6
Sahil Gupta

Dafür gibt es ein Modul: Seitencache leeren . Hier ist ein Zitat dazu (von der Projektseite des Moduls):

Linderung der Schmerzen, wenn Sie spülen müssen ... Drupals Cache.

Wenn Sie Drupals Cache auf einer großen Site leeren, können Sie das Gefühl haben, auf den Asphalt bei JFK zu warten. Die Verzögerung ergibt sich aus der Tatsache, dass beim Löschen des Drupal-Caches alles gelöscht wird. Meistens möchten Sie nur den Cache für ein bestimmtes Objekt auf einer Seite leeren.

Das Modul "Seitencache leeren" löst dieses Problem, indem nur die zwischengespeicherten Objekte für eine einzelne Seite geleert werden. Darüber hinaus können Sie benutzerdefinierte Objekte und Cache-Tabellen definieren, die auf bestimmten Seiten gelöscht werden sollen.

3
giorgio79

Eine andere Möglichkeit wäre, ein Formular zu erstellen und die Funktion cache_clear_all für die URL zu verwenden, deren Cache Sie löschen möchten. Ich habe ein Beispiel dafür gefunden, benutze hier

0
zarsiwala

Ein bisschen zu spät zur Party hier, aber das Cache Expire Modul ist wahrscheinlich das, wonach Sie suchen. Sie können genau steuern, wie das Caching für mehrere Entitätstypen verwendet wird (wenn Sie die 2.x-Version des Moduls verwenden).

In beiden Versionen des Moduls haben Sie jedoch Zugriff auf eine Regelaktion "URLs aus dem Seitencache löschen". Sie können also angeben, welche Ereignisse und Bedingungen erforderlich sind, damit die Regel ausgelöst wird. Anschließend werden die von Ihnen angegebenen URLs gelöscht. Hoffe das hilft.

0
Lester Peabody