Maison >développement back-end >tutoriel php >Exploration de l'API Cache dans Drupal 8

Exploration de l'API Cache dans Drupal 8

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-18 12:21:17973parcourir

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:

  • Stockage de données efficace: L'API utilise plusieurs "bacs", tables essentiellement préfixées avec cache_, pour le stockage de données organisé. Cette approche structurée rationalise la récupération et la gestion des données.
  • Gestion simplifiée du cache: Les méthodes de classe simples gèrent la récupération, le stockage, l'invalidation et la suppression des éléments mis en cache. Cette conception intuitive simplifie l'interaction du développeur.
  • Invalidation du cache ciblée avec les balises: Les balises de cache, une nouvelle fonctionnalité, permettent une invalidation précise des éléments de cache associés à travers les bacs. Cela élimine la nécessité de connaître les identifiants de cache individuels, l'amélioration de l'efficacité et de la précision.

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.

Exploring the Cache API in Drupal 8 Exploring the Cache API in Drupal 8

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Tester les API avec RAMLArticle suivant:Tester les API avec RAML