Я использую BOA для своих сайтов, но по умолчанию BOA просто отключает кэширование на лету для отправки форм. Помимо моего реального опыта, я столкнулся с однолетним искусством по поводу того, как Почта Новой Зеландии работает с Drupal & Varnish и проблемой с токенами форм. Святой Джон Уэйн, его обязательно нужно прочитать для кеширования Drupal - действительно. Ориентируясь только на вопрос формы:
Последним элементом нашей головоломки является модуль Cookie Cache Bypass Advanced , который автоматически устанавливает специальный файл cookie NO_CACHE каждый раз, когда пользователь отправляет форму POST на сайте, включая такие вещи, как форма входа в систему. Наш Varnish настроен для обхода кэша страниц (но не кэша ESI), когда он видит этот файл cookie.
Вы также можете отключить токены форм, когда в X_FF не требуется получение XSRF (unset ($ form ['# token']);) или ($ form ['# token'] = FALSE;)
An Acquia Drupal производительности статья выдвигает Drupal модуль Authcache , но , читая документ на Authcache, она работает кэширование с держателем места для формы (не кэширует форму):
Authcache пытается перехватить любое настроенное содержимое и установить заполнитель в HTML. Затем после загрузки страницы обратный вызов Ajax используется для извлечения пользовательских данных и заполнения заполнителей, динамически обновляя HTML-код страницы.
Текущие заполнители Authcache: токены форм (только для зарегистрированных пользователей; требуется> Drupal для предотвращения атак подделки межсайтовых запросов)
Стратегия такова: кешировать все, кроме формы . Итак, обращаясь ко всему остальному: может, Varnish вообще не используется, Memcache & Redis? Моя стратегия состояла бы в том, чтобы использовать то, что предлагает BOA, потому что я использую BOA, и мастера за ним ( omega8.cc ) знают на тонну больше, чем я. Я не думаю, что существует внешний кеш, который решает проблему. Кажется, все они обходят форму.
Выполните частичное кэширование с вышеупомянутым authcache и с тонко настроенными представлениями и панелями, как упомянуто в статье NZ Post и описано мозговым трастом в Wunderkraut - это старое, но решает проблему.
Используйте Drupal ESI Module и Varnish частично совместим с ESI):
ESI - или Edge Side Includes - это высокопроизводительное решение для кэширования для аутентифицированных пользователей, но может быть полезно и для анонимных пользователей.
Как правило, страницы, которые персонализированы для аутентифицированных пользователей (даже незначительных персонализаций, таких как блок с надписью «Зарегистрирован как manarth»), не позволяют обратным прокси-серверам (которые могут легко работать в 100 раз быстрее, чем Drupal) кэшировать страницу, поскольку сообщения предназначенный для одного пользователя, может быть виден другим.
Надеюсь, что это более полезно.