Löschen Sie eine einzelne URL aus dem Cache

9

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)?

JM01
quelle

Antworten:

6

Die Modul- Cache-Aktionen bieten eine sehr genaue 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.

Letharion
quelle
6

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.

Sahil Gupta
quelle
3

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.

giorgio79
quelle
0

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 hier ein Beispiel dafür gefunden

Zarsiwala
quelle
0

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.

Lester Peabody
quelle
-1

Das Löschen des Cache kann einfach durch Herunterladen des Drush-Moduls von http://drupal.org/project/drush erfolgen

terminal->your drupal directory

schreibe den Befehl drush cc

Es würde dich mit zurückbringen

[0]: Abbrechen
[1]: Alle
[2]: Drush
[3]: Theme-Registry [4]: ​​Menü
[5]: CSS-Js
[6]: Block
[7]: Modulliste
[8]: Themenliste
[9]: Registrierung
[10]: Ansichten

So können Sie auswählen, was Sie löschen möchten.

Wenn Sie den Cache von der Drupal-Website löschen möchten, können Sie das Modul http://drupal.org/project/admin_menu installieren und aktivieren. Es enthält ein Home-Symbol auf Ihrer Drupal-Sile und eine Menüliste, in die Sie gehen können für Cache klares Zeug ....

Nitesh Sethia
quelle
1
Er fragt nach fortgeschrittenen, benutzerdefinierten Cache-Mechanismus
Codium
Sie können drush cc viewsbeispielsweise festlegen, dass Ansichten ein beliebiger Typ in dieser Liste sein können.
Yzmir Ramirez