Кэширование страниц/переменных в предварительной обработке крючка() для анонимного пользователя


Поэтому у меня возникли проблемы с пониманием кэширования переменных, заданных в hook_preproccesses для анонимных пользователей. Похоже, что вся страница кэшируется, а не перестраивается, даже если установлено значение без кэширования. В следующем упрощенном примере я устраняю неполадки:

/**
* Implements hook_preprocess_node().
* @param $variables
*/
function hook_preprocess_node(&$variables) {

  $variables['testing_1'] = [
      '#markup' => date('m/d/Y h:i:s a', time()),
      '#cache' => ['max-age' => 0]
  ];

  $variables['testing_2'] = date('m/d/Y h:i:s a', time());
}

Затем в шаблоне ветки:

{{ testing_1 }}

{{ testing_2 }}

Оба, похоже, отлично работают для зарегистрированных пользователей, но эти переменные, похоже, никогда не обновляются для анонимных пользователей, за исключением:

  • Очистка вручную кэш
  • Сохранение содержимого на узле, которое затем очищает кэш узла.

Даже если для кэширования страниц установлено значение "без кэширования" в /admin/config/разработка/производительность, но это, похоже, не имеет значения. Это как если бы процесс hook_preprocess не запускался для пользователей anon, как только происходит попадание на первую страницу от пользователя anon.

Похоже, что из Управления кэшем анонимных пользователей и других, это связано с модулем внутреннего кэша страниц. Удаление этого ДЕЙСТВИТЕЛЬНО решает проблему, но я я не уверен, что это лучший способ решить эту проблему, тем более что она включена по умолчанию. Согласно документам, внутренний кэш страниц гласит: "Этот модуль предполагает, что страницы идентичны для всех анонимных пользователей". Это правда, я просто хочу, чтобы страницы перестраивались (перезапускали крючок предварительной обработки) для ВСЕХ пользователей anon, когда кэш страниц (установленный в /admin/config/разработка/производительность) очищается.

После дня или около того устранения неполадок я подумываю о том, чтобы просто создать задание cron для очистки кэшей на этом этапе, но должен быть лучший способ, которого мне не хватает. Как лучше всего обеспечить перестройку страниц для анонимных пользователей через определенное время?

Author: kiamlaluno, 2019-08-22

1 answers

Возможно, вы столкнулись с основной ошибкой , когда кэш страниц не соответствует максимальному возрасту, или, другими словами, максимальный возраст не отображается в кэше страниц. В сводке о проблеме есть обходной путь, но у обходного пути есть несколько собственных проблем, поэтому убедитесь, что вы тщательно продумали последствия. Проблема с ошибкой откладывается до тех пор, пока не будут решены 3 связанные проблемы. Надеюсь, это поможет.

 0
Author: Beebee, 2019-08-22 15:28:11