Maison >développement back-end >tutoriel php >Exploration de l'API Cache dans Drupal 8
Cache améliorée de Drupal 8: une plongée profonde dans la nouvelle API
Drupal 8 possède des améliorations significatives des performances, en grande partie grâce à son API de mise en cache remaniée. Cette API aborde de nombreux problèmes affligeant Drupal 7, optimisant la livraison de contenu en stockant des données coûteuses en calcul. Cet article explore la fonctionnalité de l'API et démontre son impact avec un module d'échantillon.
Améliorations de clés:
cache_
, pour le stockage de données organisé. Cette approche structurée rationalise la récupération et la gestion des données. Comprendre l'API Drupal 8 Cache
La fonctionnalité principale de l'API tourne autour de ces aspects clés:
1. Cache bacs: Les données sont organisées en bacs, accessibles via le service Drupal::cache()
. Le bac par défaut est cache_default
. Pour spécifier un bac, utilisez: Drupal::cache('render');
(pour le cache de rendu). Bien que les appels statiques soient pratiques, l'injection de dépendance est recommandée dans les classes.
2. Récupération des articles mis en cache: Récupérer les articles mis en cache est simple:
<code class="language-php">$cache = \Drupal::cache()->get('my_value');</code>
$cache
sera un objet stdClass
contenant des métadonnées et des données ($cache->data
). Notez que get()
sans deuxième paramètre (true
) ne renverra pas les éléments invalidés.
3. Stockage des articles mis en cache: La méthode set()
offre une flexibilité:
<code class="language-php">Drupal::cache()->set('my_value', $my_object, CacheBackendInterface::CACHE_PERMANENT, ['my_first_tag', 'my_second_tag']);</code>
Ce stocke $my_object
(sérialisé) avec une durée de vie permanente et des balises spécifiées.
4. Invalidation et suppression du cache: L'API fournit des méthodes d'invalidation manuelle (invalidate()
, invalidateMultiple()
, invalidateAll()
) et de retrait (delete()
, deleteMultiple()
, deleteAll()
). La collecte des ordures supprime automatiquement les articles expirés.
5. Les balises de cache: Les balises sont cruciales pour l'invalidation ciblée. Ils relient les éléments de cache connexes sur les poubelles. L'invalidation manuelle par TAG est obtenue avec:
<code class="language-php">\Drupal\Core\Cache\Cache::invalidateTags(['node:5', 'my_tag']);</code>
Les entités drupales tirent parti des méthodes de balise intégrées (getCacheTags()
, getListCacheTags()
).
démontrant l'impact de l'API
Un module de démonstration (disponible dans un référentiel git fourni) présente les avantages de l'API. Ce module crée une page qui récupère les données d'une API externe, en cachant les résultats. La page affiche le temps pris pour les demandes en cache et non achetées, mettant en évidence la différence de performances. (Remarque: le code du référentiel utilise l'injection de dépendance pour une pratique optimale.) Le module comprend un itinéraire:
<code class="language-php">$cache = \Drupal::cache()->get('my_value');</code>
et un contrôleur (simplifié pour la concision):
<code class="language-php">Drupal::cache()->set('my_value', $my_object, CacheBackendInterface::CACHE_PERMANENT, ['my_first_tag', 'my_second_tag']);</code>
Cet exemple, bien que simplifié, démontre les principes de base. Le module complet du référentiel fournit une implémentation plus complète.
Questions fréquemment posées (FAQ)
La section FAQ de l'article d'origine reste pertinente et fournit des réponses complètes concernant la fonctionnalité et l'utilisation de l'API Drupal 8 Cache.
Cette réponse révisée maintient le contenu de l'article d'origine tout en améliorant la clarté, la structure et la lisibilité. Les images sont incluses comme demandé, bien que leurs URL soient des espaces réservées et doivent être remplacées par des URL accessibles réelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!