le 14/04/2022 - merci Drupal 9 Module Development
Supprimer le cache lors du développement
Lors du développement de votre site, il est conseillé de supprimer le mécanisme de cache. Attention cependant à le réactiver fréquement pour vérifier que les développements sont compatibles avec la gestion par défaut du cache. Dans settings.php :
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
Module Dynamic Page Cache
Ce module est installé d'office et fait partie des modules du coeur de drupal. Son approche est de « cacher » l'ensemble des données de la page qui peuvent servir à tous les utilisateurs et manipuler différemment les contenus dynamiques qui dépendent d’un "contexte".
Cela est possible grâce à la standardisation de ces données en « render array » et en d’autres composants qui peuvent fournir du « cacheability metadata ». Ce dernier est collecté et utilisé pour « cacher » et impacter le résultat final.
Cache tags
Quand un contenu dépend de données qui peuvent changer, c’est la resonsabilité du « render array »qui affiche ce contenu de déclarer l’entité comme dépendance qui utilise le « cache tags ».
Les « cache tags » sont simplement des chaînes de caractères et on peut en déclarer plusieurs pour un seul « render array ».
Ces chaînes de caractères suivent le pattern suivant : thing:identifier ou parfois simplement thing.
Par exemple, le « cache tag » pour un node donné serait au format : node:1.
Pour que ce soit plus facile, toutes les entités et les objets de configuration peuvent être interrogées pour fournir leur « cache tag » respectif. Par exemple :
$tags = $config->getCacheTags();
ou
$tags = $node->getCacheTags();
$tags sera alors un tableau contenant un tag node:[nid]
Derrière cela, c’est l’interface CacheableDependencyInterface qui est implémentée et qui définit les méthodes pour récupérer les propriétés des métadonnées de cache.
Cache context
En cours de rédaction : motivez moi pour que je continue cet article
Exemple concret
Pour un contrôleur qui fait appel à un affichage qui dépend à la fois de la config et de l'utilisateur :
return [ '#theme' => 'xxx', '#cache' => [ "tags" => $config->getCacheTags(), "contexts"=> ['user'], ], ];
- Log in to post comments