it-swarm.com.de

Cache des einzelnen Knotens leeren, wenn aktualisiert?

Gibt es eine Möglichkeit, den Cache eines einzelnen Knotens zu leeren, wenn er aktualisiert wird? (Anstatt den gesamten Cache von Drupal leeren zu müssen, um die Änderungen sofort anonymen Benutzern anzuzeigen? (Regeln oder ein Modul vielleicht?)

6
Nigel Waters

Wenn Sie node_save verwenden, wird der Cache für den jeweiligen Knoten automatisch gelöscht. Wenn Sie eine andere Methode zum Speichern des Knotens verwenden, gehen Sie wie folgt vor:

entity_get_controller('node')->resetCache(array($node->nid));
8
Mathankumar

Das hat bei mir funktioniert. Der in der anderen Antwort angegebene Aufruf von entity_get_controller ('node') hat nicht funktioniert.

// Clear field cache
$entity->type = 'node';
$entity->id  = 54321;
cache_clear_all("field:$entity->type:$entity->id", 'cache_field');
6
Darrell Duane

Ich glaube, Views Custom Cache Modul könnte Ihre Lösung sein.

Installieren Sie das Modul "Views Custom Cache" wie gewohnt.

Ansichten Einstellungen:

Ihr erstes Argument ist Node ID .

Zweites Argument hinzufügen Benutzerdefiniertes globales: NULL-Argument - das ignoriert wird und die Ansicht in keiner bestimmten Weise beeinflusst - außer Caching!

Stellen Sie sicher, dass dieses Argument nicht vorhanden ist, wenn die Ansicht generiert wird, damit die Regel "Wenn der Filterwert NICHT verfügbar ist" ausgelöst wird.

Wenn Ihre Ansicht den Pfad zum Beispiel "node/nid" Hat, steht Ihnen nid als arg(1) zur Verfügung.

Hinweis: Passen Sie den Wert arg() (0, 1, 2 ...) an Ihren Anwendungsfall im folgenden Codeausschnitt an.

Im Argument Global Null: Wenn der Filterwert NICHT verfügbar ist/Standardwert angeben/PHP Code eingeben:

$node = node_load(arg(1));
return $node->changed;

Jetzt gibt Ihr zweites Argument (globales Null-Argument) immer das Aktualisierungsdatum des neuen Knotens (Zeitstempel) zurück, und Sie können die Option "Benutzerdefinierter Cache: Alle Argumente anzeigen" verwenden.

Das globale Null-Argument wird ignoriert und wirkt sich nicht auf das Rendern der Ansicht aus. Es wirkt sich jedoch auf den Cache aus und macht es eindeutig für das angegebene Node ID + Node aktualisierte Datumspaar. Wenn der Knoten aktualisiert wird, wird das neue Aktualisierungsdatum (Zeitstempel) Node als zweites Argument an die Ansicht zurückgegeben, wodurch eine automatische Aktualisierung des Ansichtscaches für die angegebene ID Node erfolgt.

Antwortreferenz: https://www.drupal.org/node/2559607#comment-10436015

1
devad