Heim >Backend-Entwicklung >PHP-Tutorial >Erkundung der Cache -API in Drupal 8
Drupal 8's Enhanced Caching: Ein tiefes Eintauchen in die neue API
Drupal 8 bietet erhebliche Leistungsverbesserungen, vor allem dank der überarbeiteten Caching -API. Diese API befasst sich mit vielen Problemen, die Drupal 7 plagen und die Inhaltszustellung durch rechnerisch teure Daten optimieren. Dieser Artikel untersucht die Funktionalität der API und demonstriert seine Auswirkungen auf ein Beispielmodul.
Schlüsselverbesserungen:
cache_
für organisierte Datenspeicher vorangestellte Tabellen. Dieser strukturierte Ansatz strömt das Abrufen und die Verwaltung von Daten zur Verfügung. Verständnis der Drupal 8 -Cache -API
Die Kernfunktionalität der API dreht sich um diese Schlüsselaspekte:
1. Cache -Bins: Daten werden in Bins organisiert, auf die über den Drupal::cache()
-Dienst zugegriffen wird. Der Standardbehälter ist cache_default
. Verwenden Sie: Drupal::cache('render');
(für den Render -Cache), um einen Bin anzugeben. Während statische Anrufe bequem sind, wird in den Klassen die Abhängigkeitsinjektion empfohlen.
2. Abrufen von zwischengespeicherten Gegenständen: abrufen zwischengespeicherte Gegenstände ist unkompliziert:
<code class="language-php">$cache = \Drupal::cache()->get('my_value');</code>
$cache
ist ein stdClass
-Objekt, das Metadaten und Daten enthält ($cache->data
). Beachten Sie, dass get()
ohne einen zweiten Parameter (true
) keine ungültig erklärten Elemente zurückgibt.
3. Speichern von zwischengespeicherten Elementen: Die set()
-Methode bietet Flexibilität:
<code class="language-php">Drupal::cache()->set('my_value', $my_object, CacheBackendInterface::CACHE_PERMANENT, ['my_first_tag', 'my_second_tag']);</code>
Dies speichert $my_object
(serialisiert) mit einer dauerhaften Lebensdauer und angegebenen Tags.
4. Cache Invalidierung und Entfernung: Die API enthält Methoden zur manuellen Invalidierung (invalidate()
, invalidateMultiple()
, invalidateAll()
) und zur Entfernung (delete()
, deleteMultiple()
, deleteAll()
). Die Müllsammlung entfernt automatisch abgelaufene Artikel.
5. Cache -Tags: Tags sind für die gezielte Ungültigmachung von entscheidender Bedeutung. Sie verknüpfen verwandte Cache -Elemente über Behälter. Manuelle Ungültigkeit durch Tag wird mit:
erreicht<code class="language-php">\Drupal\Core\Cache\Cache::invalidateTags(['node:5', 'my_tag']);</code>
Drupal-Entitäten nutzen integrierte Tag-Methoden (getCacheTags()
, getListCacheTags()
).
Demonstration des API -Auswirkungens
Ein Demonstrationsmodul (verfügbar in einem bereitgestellten Git -Repository) zeigt die Vorteile der API. Dieses Modul erstellt eine Seite, die Daten von einer externen API abruft und die Ergebnisse zwischengespeichert. Die Seite zeigt die Zeit an, die sowohl für zwischengespeicherte als auch für ungekochte Anfragen benötigt wird, wodurch der Leistungsunterschied hervorgehoben wird. (Hinweis: Der Code des Repository verwendet die Abhängigkeitsinjektion für optimale Praxis.) Das Modul enthält eine Route:
<code class="language-php">$cache = \Drupal::cache()->get('my_value');</code>
und ein Controller (für die Kürze vereinfacht):
<code class="language-php">Drupal::cache()->set('my_value', $my_object, CacheBackendInterface::CACHE_PERMANENT, ['my_first_tag', 'my_second_tag']);</code>
Dieses Beispiel zeigt zwar vereinfacht, zeigt die Kernprinzipien. Das vollständige Modul im Repository bietet eine vollständigere Implementierung.
häufig gestellte Fragen (FAQs)
Der FAQS -Abschnitt aus dem ursprünglichen Artikel bleibt relevant und bietet umfassende Antworten auf die Funktionalität und Verwendung der Drupal 8 Cache -API.
Diese überarbeitete Antwort behält den Inhalt des ursprünglichen Artikels bei und verbessert die Klarheit, Struktur und Lesbarkeit. Die Bilder sind wie angefordert enthalten, obwohl ihre URLs Platzhalter sind und durch tatsächliche zugängliche URLs ersetzt werden müssen.
Das obige ist der detaillierte Inhalt vonErkundung der Cache -API in Drupal 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!