Рейтинг:1

Представление не будет обновляться, пока не будут очищены кеши

флаг co

На сайте Drupal 9 я создал представление, которое отображает определенный контент для каждого дня месяца (фильтрация по полю даты).

Представление показывает правильное содержимое для пользователя-администратора, но не для кого-либо еще, если кэши не очищены.

Я пробовал отключать кеширование для этого представления, отключать кеширование представлений и отключать все кеширование на сайте, но ничего из этого не имеет значения.

Единственный способ сделать обновление контента корректным — каждый день нажимать кнопку «Очистить все кеши».

Это не имеет смысла. (Я создавал такое представление в прошлом в Drupal 7, и у меня не было такой проблемы.)

Любая помощь будет принята с благодарностью.

флаг cn
У вас есть что-нибудь вроде Varnish, Redis, какой-то CDN и т.д.? Иногда где-то есть еще один тайник.
флаг in
Это также зависит от конфигурации этого представления. Получает ли это представление данные из индекса API поиска? Отрисовывается ли это представление в анонимном контексте? Данные, отображаемые представлением, вычисляются из чего-то или используют пользовательскую логику для извлечения? Существуют ли шаблоны веток, управляющие рендерингом данных представления или самим представлением?
флаг co
Единственный CDN, о котором я знаю, предназначен для веб-форм в другом месте сайта (хотя я не уверен, что он использует CDN, но Drupal выдает массу ошибок о CDN, если вы не отключите его).
флаг co
@Joseph Представление довольно простое: заголовок, тело, дата. Любой контент добавляется заранее, и в представлении отображается одна запись (единственная запись за этот день) с использованием фильтра в поле «Дата» «Равно» «сейчас» (который всегда работал с Drupal 7).
Рейтинг:2
флаг cn

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

Другим способом было бы сделать недействительным тег кеша View в задании cron.Преимущество внутреннего кэша страниц перед внешними кэшами, такими как Varnish или CDN, заключается в том, что вам не нужны запросы PURGE, вы можете напрямую аннулировать тег кэша:

\Drupal\Core\Cache\Cache::invalidateTags(['config:views.view.my_view']);
sonfd avatar
флаг in
Вы также можете аннулировать с помощью [_cache_tags.invalidator_](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Cache%21CacheTagsInvalidator.php/function/CacheTagsInvalidator%3A%3AinvalidateTags/8.2. x) сервис (то, что `Cache::invalidateTags()` вызывает внутри), например: `\Drupal::service('cache_tags.invalidator') ->invalidateTags($tags);`
флаг co
Я действительно ценю все эти ответы, но все они кажутся безумно техническими и сложными для чего-то, что должно быть относительно базовой функциональностью (и очень просто работало в прошлом с Drupal 7).
4uk4 avatar
флаг cn
Просто удалите модуль. См. страницу модуля: «Веб-сайты, которые предоставляют анонимным пользователям динамический контент, захотят отключить модуль внутреннего кэша страниц». Однако ваш случай не такой динамичный, он меняется только один раз в день. Таким образом, вы можете выбрать второй вариант и сохранить прирост производительности этого модуля.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.