Вопрос или проблема
Я использую плагин (Comet Cache), чтобы сохранять статические версии определенной страницы на моем сайте.
Внутри плагина я настроил кэш на очистку каждые 2 часа (так эта страница может показывать последнюю, не кэшированную версию данных, которую она загружает).
Единственная проблема заключается в том, что для повторной кэшировки этой страницы кто-то должен вручную перейти на нее.
Я пытаюсь автоматизировать это с помощью WP Cron, где он срабатывает на загрузку страницы с контентом. Я также размышлял о том, чтобы сделать это с помощью Python вне WordPress.
Существует ли лучший способ сделать это? Спасибо.
Да, использование WP-CRON хорошо подойдёт для этого. Один из способов сделать это — установить новый cron на немедленно с каждой загрузкой страницы. Не давайте задаче уникальное имя. По умолчанию WP-CRON будет выполнять действие только раз каждые десять минут. Таким образом, если на ваш сайт часто заходят, cron будет срабатывать каждые десять минут или около того. Он запускает свой процесс, так что не должен замедлять вашу систему. Идея с 2 часами является расточительной, потому что это больше работы без выгоды.
Преимущество в том, что это легко и будет обновлять кэш каждые десять минут. Недостаток в том, что если НИКТО не посещает сайт, первый переход на страницу будет старыми кэшированными данными [что затем инициирует немедленный cron]. Обратите внимание, если эти данные доступны только для вошедших в систему пользователей или если нужно щелкнуть по меню или ЧЕМУ-ЛИБО, это запустит cron в фоновом режиме.
Так что да, это хороший подход, вероятно, лучший подход для загрузки кэшированных данных в фоновом режиме.
Нет способа сделать систему WP Cron работающей без посещения сайта. Если вы хотите предотвратить необходимость пользователю инициировать обновление кэша, вы можете настроить фактическую запланированную задачу с чем-то вроде AWS Lambda или CronJob.org, чтобы посещать страницу каждую минуту.
Тем не менее, даже если запланированная задача выполняется каждую минуту, все равно остается небольшое окно близко к минуте, когда пользователь может инициировать WP Cron.
Лучшее решение, если ваша система кэширования имеет соответствующие хуки, — это настроить запланированную задачу на обращение к url с параметром запроса вроде ?cache_refresh=true
, а затем обработать это для обновления кэша (или истечения срока его действия и установки его снова), так что пользователь никогда не станет инициатором обновления. С этим методом вы установите время истечения действия намного выше (например, на день) и затем заставите запланированную задачу работать каждые два часа, чтобы дать запланированной задаче полный контроль над тем, когда кэш обновляется. Таким образом, вам больше не нужно будет использовать систему WP Cron вообще.
Если у вашего плагина нет хуков для этого, вы, возможно, захотите проверить, использует ли он WordPress Transients для достижения кэширования. Если да, вы сможете использовать Transient API для принудительного обновления – или просто отказаться от плагина и использовать Transient API напрямую с запланированными задачами для более точного контроля над процессом.
ПОПРАВКА: Дополнительно, возможно, это немного чрезмерно для этого приложения, вы можете сделать так, чтобы ваш WP Cron активировал асинхронную задачу, которая будет выполнять работу в фоновом режиме – это проще всего сделать с помощью библиотеки, такой как эта.
Ответ или решение
Использование WP Cron для очистки кеша страницы: Полный гайд
Вопрос автоматизации обновления кеша страницы на вашем сайте, использующем плагин Comet Cache, является довольно распространенной задачей среди веб-разработчиков и администраторов. В данной статье мы рассмотрим, как правильно настроить WP Cron для автоматического обновления кеша и какие альтернативные решения могут вам подойти.
1. Основная проблема
Ваш текущий способ работы с кешем заключается в том, что он очищается каждые 2 часа, однако для повторного кеширования пользователю необходимо вручную зайти на страницу. Это создает неудобства, особенно если к странице нет частого доступа.
2. WP Cron как решение
Использование WP Cron – это один из наиболее простых и надежных способов автоматизировать процесс загрузки страницы для обновления кеша. Давайте разберем шаги, как это можно сделать:
- Настройка WP Cron: Можно создать задание, которое будет срабатывать с определенной периодичностью, например, каждые 10 минут. Это позволит поддерживать кеш актуальным.
if ( ! wp_next_scheduled( 'your_custom_cache_update_action' ) ) {
wp_schedule_event( time(), 'ten_minutes', 'your_custom_cache_update_action' );
}
add_action( 'your_custom_cache_update_action', 'refresh_cache_function' );
function refresh_cache_function() {
$response = wp_remote_get( 'http://yourwebsite.com/your-cached-page-url/' );
// Обработка полученного ответа, если необходимо
}
3. Плюсы и минусы подхода
Плюсы:
- Простой в реализации способ.
- Не требует дополнительных инструментов.
Минусы:
- Если на сайт нет посетителей, кеш может оставаться неактуальным до следующего визита.
- Первоначально старая версия страницы будет отображаться.
4. Альтернативные подходы
Имеются и другие методы, чтобы избежать зависимости от посещаемости сайта для очистки кеша:
-
Внешние задачи: Используйте такие службы, как AWS Lambda или CronJob.org для выполнения HTTP-запросов к вашей странице через заданные интервалы (например, каждые 2 часа). Это решение обеспечивает постоянный доступ к вашей странице.
-
Контроль через параметры URL: Если ваш кеширующий плагин поддерживает хуки, рассмотрите возможность реализации URL с параметром, например
?cache_refresh=true
. Это потребует, чтобы ваш сервер обработал запрос и обновил кеш без вмешательства пользователя.
5. Рекомендации
Если ваш плагин не поддерживает необходимые хуки для управления кешем, рассмотрите возможность использования Transients API, который позволит вам более гибко контролировать кеширование:
set_transient( 'your_cache_key', $your_data, 24 * HOUR_IN_SECONDS );
Если же вы не удовлетворены функционалом текущего плагина, стоит подумать о его замене на более эффективное решение, которое позволит вам получать необходимые данные без лишних манипуляций.
6. Заключение
Автоматизация очистки кеша страницы на вашем сайте – задача вполне выполнимая и требует нескольких шагов для настройки. Использование WP Cron – это удобно, но не всегда эффективно, если на ваш сайт не приходят посетители. Альтернативные внешние задачи могут обеспечить более стабильную работу. Не забывайте о возможности использования Transients API для достижения более тонкого контроля над данными.
Вам может потребоваться экспериментировать с различными подходами, чтобы найти наилучшее решение для вашего конкретного случая.