Как сделать недействительным кэш представлений на основе пользовательских критериев?


У меня есть пользовательский тип контента (story) с полем даты и времени, которое определяет, отображается ли история в представлениях, в которых перечислены узлы этого типа контента; если дата и время, определенные для узла, новее, чем текущее время, оно не будет отображаться.

Моя проблема в том, что я должен пойти и очистить admin/config/development/performance и нажать Clear all caches или снять флажок Cache pages for anonymous users.

Я хотел бы сохранить кэширование страниц для анонимных пользователей, поэтому я ищу другие варианты.

Любая помощь - это очень много оцененный.

Author: AyeshK, 2011-03-23

2 answers

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

Было несколько разговоров о том, как сделать первое, но это не то, что я проверял или могу посоветовать.

Имейте в виду, что возня с Drupal система кэширования может вызвать некоторые непредвиденные проблемы.

Альтернативным решением было бы очищать кэш страниц или аннулировать кэш для этой конкретной страницы один раз в день/час, чтобы убедиться, что он относительно актуален. Вероятно, это тот путь, который я выбрал бы в этой ситуации.

 3
Author: googletorp, 2011-03-23 12:35:03

У меня есть патч для boost, который делает именно то, что вы хотите, потому что это требование нашей настройки. Проблема в том, что для этого нужен внешний искатель; мы проверяем наличие нового контента каждые 30 секунд в наших 1100 доменах и повторно сканируем их. То, что вы хотите, может быть сделано; Но я все еще работаю над деталями, чтобы это работало для средней настройки. Это также для D6, так что вам это не очень поможет.

Короче говоря, вам нужно что-то внешнее, чтобы увидеть, истекло ли время ИЛИ какая-то логика в settings.php это решает эту проблему. Что-то внешнее, скорее всего, будет cron.

 1
Author: mikeytown2, 2011-03-24 07:14:17