Vous êtes ici

Comment activer les headers X-Drupal-Cache-Tags et X-Drupal-Cache-Contexts sous Drupal 8 ?

Portrait de DrupalFacile
Soumis par DrupalFacile le dim, 01/11/2015 - 09:28

La majorité des sites Drupal 8 seront probablement hébergés soit sur des environnements mutualisés soit sur des serveurs sans reverse proxy cache et/ou de mécanisme (par exemple Purge) pour purger les cache-tags sur Varnish ou un CDN. La plupart des sites n'auront donc pas besoin d'avoir les headers X-Drupal-Cache-Tags et X-Drupal-Cache-Contexts retournés car ils leur seront inutiles. De même, beaucoup de configurations par défaut pour Apache, nginx, Varnish ou un CDN limitent encore la taille des headers à 4K, ce qui causera une page d'erreur (WSOD) si la page renvoie beaucoup/trop de cache tags.

Le cas des solutions tierces telles que Fastly ou Cloudflare (mais pas seulement) est encore différent, chacun nécessitant des cache tags formatés spécifiquement pour qu'ils les acceptent :

  • Fastly: Surrogate-Keys (cache tags séparés par des espaces, comme le fait Drupal)
  • CloudFlare: Cache-Tag (cache tags séparés par des virgules)

Pour faire court, à des fins de développement vous pouvez avoir besoin d'afficher ces headers, mais ne pas les activer pour tous en production est donc logique. Surtout qu'ils peuvent renvoyer des erreurs WSOD difficiles à débusquer pour le hobbyiste si trop de metadata sont renvoyées et dépassent les limites imposées par votre stack (Apache, nginx et Varnish ont des limites à 4K par défaut). A partir de Drupal 8 RC2 il a donc été décidé de ne plus les renvoyer par défaut (lire le change record).

Si vous souhaitez tout de même activer les headers d'invalidation de cache (pas en production !), éditez le fichier services.yml et changez le paramètre suivant de false à true

http.response.debug_cacheability_headers: true

Il vous faudra derrière reconstruire le container, ce qui se fait simplement, par exemple avec la commande Drush cache-rebuild ou depuis la page de Performance (admin/config/development/performance).

$ drush cache-rebuild
Version: 
Drupal 8
Niveau: 
Expert
Partager ce contenu