it-swarm.com.de

Verhindern Sie das Zwischenspeichern eines Knotens

Ich arbeite an einer Facebook-ähnlichen Schaltfläche für drupal 8. Es ist kurz vor dem Abschluss, aber ich habe Probleme. Immer wenn ich die Konfiguration meines Moduls ändere, muss ich noch alles löschen Caches manuell, damit die Änderungen wirksam werden.

Ich füge den Like-Button folgendermaßen hinzu:

function fblikebutton_node_view(&$build, $node, $display, $type, $lang) {
  $build['fblikebutton'] = [
    '#theme' => 'fblikebutton',
    '#weight' => 100, 
  ];
}

Gibt es Möglichkeiten, das Zwischenspeichern aller Knoten zu verhindern oder den Cache programmgesteuert zu löschen, nachdem die Konfiguration aktualisiert wurde? Oder sollte ich einfach die Art und Weise ändern, wie ich die Schaltfläche zur Seite hinzufüge?

4
Vadim Khamzin

Es ist nicht klar, was genau Sie fragen.

Die Antwort von @ Cottser ist richtig, um den Render-Cache während der Entwicklung zu deaktivieren. Dies möchten Sie jedoch nicht auf einer Produktionssite tun, da das Render-Caching für die Leistung von entscheidender Bedeutung ist. Wenn Sie den Render-Cache lokal deaktivieren, stellen Sie außerdem sicher, dass Sie Änderungen immer in derselben Konfiguration wie die Produktion testen, um Probleme damit zu erkennen.

Wenn das von Ihnen ausgegebene Markup für etwas dynamisch ist, können Sie diesen Kontext zum Cache-Schlüssel hinzufügen. Siehe meine Antwort in https://drupal.stackexchange.com/a/140777/31 .

Wenn es darum geht, den Cache zu löschen, nachdem der Benutzer die Einstellungen geändert hat, können Sie das Cache-Tag node_view mit Drupal::entityManager()->getViewBuilder('node')->resetCache() löschen. Wenn Sie den Cache eines bestimmten Tags löschen möchten, können Sie die Knoten-ID an diese Methode übergeben oder \Drupal\Core\Cache\Cache::invalidateTags($node->getCacheTags()) verwenden.

Jedes gerenderte Objekt verfügt über ein oder mehrere Cache-Tags (überprüfen Sie den X-Drupal-Cache-Tags-Header einer Seitenantwort, ich bin sicher, dass es Entwicklungswerkzeuge geben wird, um sie in Zukunft besser zu verstehen), indem Sie sie ungültig machen kann automatisch alle Caches löschen, die sie enthalten.

2
Berdir

Das Rendern der Knotenentität wird zwischengespeichert.

Um den Render-Cache zu deaktivieren, kommentieren Sie die folgenden Zeilen unten in settings.php aus und kopieren Sie sites/example.settings.local.php bis sites/default/settings.local.php und lösche die Drupal Caches:

if (file_exists(__DIR__ . '/settings.local.php')) {
  include __DIR__ . '/settings.local.php';
}

Weitere Informationen finden Sie unter https://www.drupal.org/node/1903374#drupal-render-cache .

1
Cottser

Sie benötigen den CacheExclude , den Sie hier finden:

https://www.drupal.org/project/cacheexclude

Möglicherweise erhalten Sie auch Inspirationen für eine benutzerdefinierte Anwendung.

0
W.M.