Бывают случаи, когда вам необходимо очищать кеш Drupal по определенному расписанию, например, у вас на сайте в шаблоне выводится текущая дата и на следующие сутки, в результате кеширования страниц, вы будете видеть некоторое время старую дату, до того момента, пока не будет сброшен кеш.
Вывод текущий даты в page.html.twig
В page.html.twig мы добавляем функцию current_date, в которой указываем заранее созданный формат даты.
{% set current_date = date()|date('U')|format_date('название_шаблона_формата_даты') %}
И уже в нужном регионе выводим дату, которая будет динамически меняться:
{{ current_date|placeholder|striptags }}
Настройка кеширования по расписанию в Drupal 10
Есть множество способов, чтобы автоматизировать очистку кеша, но наиболее часто встречаемые следующие:
- Настройка очистка кеша с помощью модуля CacheFlush (доступен для версии Drupal 9 на момент написания материала, для 10 версии нужен патч)
- Настройка очистки кеша с использованием Drush и планировщика задач Cron.
Мы считаем, что наиболее удобный второй вариант, так как нет необходимости устанавливать дополнительные модули, а все действия будут работать на стороне сервера.
Автоматизация очистки кеша с помощью Drush и Cron
В зависимости как настроено веб-окружение на сервере или веб-хостинге, установка Drush отличается в каждом конкретном случае. Поэтому перед началом ввода команд убедитесь, что на вашем тарифном плане поддерживается Composer и Drush.
Мы рассмотрим процесс автоматизации на базе классического Unix-хостинга с панелью управления Cpanel.
С помощью командной строки перейдите в корневой каталог сайта и с помощью команды drush status найдите путь к PHP binary и к Drush script. Данные url будут необходимы для запуска команд в cron.
Далее необходимо перейти в планировщик задач, настроить периодичность выполнения скрипта и ввести команду на очистку кеша drush cache-rebuild (drush cr).
Примеры заданий Crontab для виртуального хостинга:
cd /home/название_учетной_записи/домен_проекта/public_html && /home/название_учетной_записи/домен_проекта/public_html/vendor/bin/drush cr
cd /var/www/название_учетной_записи/public_html/домен && /opt/php/8.1/bin/php /var/www/название_учетной_записи/vendor/bin/drush cr
Все готово, не забудьте проверить работу cron, используя ящик электронной почты для уведомлений или с записью в лог-файл, используя команду
> cron_log.txt 2>&1