J'utilise BOA pour mes sites, mais par défaut, BOA désactive simplement la mise en cache frontale à la volée pour les soumissions de formulaires. Au-delà de mon expérience réelle, je suis tombé sur un artificiel d'un an sur la façon dont le New Zealand Post traite Drupal & Varnish et le problème des jetons de forme. Holy John Wayne, c'est une lecture incontournable pour la mise en cache Drupal - vraiment. En se concentrant uniquement sur le problème du formulaire:
La dernière pièce de notre puzzle est le module avancé de contournement du cache des cookies , qui définit automatiquement un cookie NO_CACHE spécial chaque fois que l'utilisateur soumet un formulaire POST sur le site, y compris des éléments comme le formulaire de connexion. Notre vernis est configuré pour contourner le cache de page (mais pas le cache ESI) lorsqu'il voit ce cookie.
Vous pouvez également désactiver les jetons de formulaire lorsque la production XSRF n'est pas requise avec dans form_alter (unset ($ form ['# token']));) ou ($ form ['# token'] = FALSE;)
Un article sur les performances d' Acquia Drupal propose un module Drupal Authcache , mais en lisant le document sur Authcache, il établit la mise en cache avec un espace réservé pour le formulaire (pas la mise en cache du formulaire):
Authcache tente d'intercepter tout contenu personnalisé et de configurer un espace réservé dans le code HTML. Ensuite, une fois la page chargée, un rappel Ajax est utilisé pour récupérer des données personnalisées et remplir les espaces réservés, mettant à jour dynamiquement le HTML de la page.
Espaces réservés Authcache actuels: jetons de formulaire (utilisateurs connectés uniquement; requis par> Drupal pour empêcher les attaques de contrefaçon de demande intersite)
La stratégie consiste à tout mettre en cache , sauf le formulaire . Donc, pour tout le reste: peut-être que Varnish n'est pas utilisé du tout, Memcache & Redis? Ma stratégie serait d'utiliser ce que BOA propose car j'utilise BOA et les assistants derrière lui ( omega8.cc ) en savent plus que moi. Je ne pense pas qu'il existe un cache externe qui résout le problème. Ils semblent tous contourner la forme.
Faites une mise en cache partielle avec l'authcache susmentionné et avec des vues et des panneaux finement modifiés, comme mentionné dans l'article du NZ Post et décrit par le brain trust de Wunderkraut - son ancien, mais résout le problème.
Utiliser le module Drupal ESI et le vernis est partiellement conforme ESI):
ESI - ou Edge Side includes - est une solution de mise en cache haute performance pour les utilisateurs authentifiés, mais peut également être utile pour les utilisateurs anonymes.
En règle générale, les pages personnalisées pour les utilisateurs authentifiés (même les personnalisations mineures, comme un bloc qui dit "Connecté en tant que manarth") empêcheront les procurations inverses (qui peuvent facilement fonctionner 100 fois plus rapidement que Drupal) de mettre la page en cache, car les messages destiné à un utilisateur pourrait alors être vu par un autre.
J'espère que c'est plus utile.