В WordPress кеширование — это мощный инструмент для ускорения загрузки страниц и снижения нагрузки на сервер. Однако без регулярного очищения старого кеша он может привести к проблемам с отображением контента и даже снижению производительности. В этой статье мы подробно рассмотрим, как автоматизировать удаление старого кеша в WordPress с помощью как готовых решений, так и кастомных скриптов.
Почему важно удалять старый кеш в WordPress
Кеш хранит версии страниц, скриптов, стилей и других элементов сайта для быстрого отображения посетителям. Но со временем кеш устаревает — появляются обновления контента, новые стили, исправления ошибок. Если кеш не обновлять, посетители увидят старую информацию, что ухудшит UX и SEO. Кроме того, накопление кеша занимает место на сервере, что негативно влияет на его производительность.
Регулярное удаление устаревшего кеша позволяет:
- Обеспечить показ актуального контента.
- Снизить нагрузку на сервер за счет оптимального объема кеша.
- Предотвратить возможные конфликты с новыми версиями плагинов и тем.
Автоматизация удаления кеша через WP-Cron
WordPress имеет встроенную систему планировщика задач — WP-Cron. С её помощью можно настроить регулярное выполнение функций, например, очистку кеша.
Создаем функцию очистки кеша
В зависимости от используемого решения кеширования, способы очистки отличаются. Рассмотрим универсальный пример для файлового кеша в папке wp-content/cache/:
function wpdetect_clear_old_cache() {
$cache_dir = WP_CONTENT_DIR . '/cache/';
if (!is_dir($cache_dir)) return;
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($cache_dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
$now = time();
$max_age = 86400; // 24 часа
foreach ($files as $fileinfo) {
if ($fileinfo->isFile()) {
if ($now - $fileinfo->getMTime() > $max_age) {
@unlink($fileinfo->getRealPath());
}
}
}
}
Эта функция удаляет все файлы кеша старше 24 часов. Дальше привяжем её к WP-Cron.
Регистрация события WP-Cron
function wpdetect_schedule_cache_clear() {
if (!wp_next_scheduled('wpdetect_clear_cache_hook')) {
wp_schedule_event(time(), 'daily', 'wpdetect_clear_cache_hook');
}
}
add_action('wp', 'wpdetect_schedule_cache_clear');
add_action('wpdetect_clear_cache_hook', 'wpdetect_clear_old_cache');
Теперь функция wpdetect_clear_old_cache будет запускаться ежедневно и удалять устаревший кеш.
Использование популярных плагинов для управления кешем
Если на сайте установлен плагин кеширования, лучше использовать его API для очистки, чтобы избежать проблем.
WP Super Cache
Для WP Super Cache очистка кеша в коде:
function wpdetect_wp_super_cache_clear() {
if (function_exists('wp_cache_clear_cache')) {
wp_cache_clear_cache();
}
}
Эту функцию также можно повесить на WP-Cron, заменив wpdetect_clear_old_cache.
W3 Total Cache
Для W3 Total Cache очистка кеша:
function wpdetect_w3tc_clear_cache() {
if (function_exists('w3tc_flush_all')) {
w3tc_flush_all();
}
}
WP Rocket
WP Rocket не предоставляет публичных функций очистки, но можно использовать WP-CLI команду:
wp rocket clean
Для автоматизации через PHP можно запускать shell-команды (если разрешено):
function wpdetect_wp_rocket_clear_cache() {
if (function_exists('shell_exec')) {
shell_exec('wp rocket clean');
}
}
Автоматизация очистки кеша с помощью плагинов
Если вы не хотите писать код, можно воспользоваться плагинами, которые позволяют настроить автоматическую очистку кеша по расписанию или по определённым событиям:
- Clearfy Pro — оптимизирует работу сайта и поддерживает автоматическую очистку кеша, интегрируется с популярными плагинами кеширования. Подробнее: wpshop.ru/plugins/clearfy-pro
- WP Rocket — премиальный плагин с функцией автоматической очистки кеша при обновлении контента.
- WP-Optimize — плагин для очистки базы данных, который также поддерживает очистку кеша.
Практические советы по управлению кешем
Для эффективной работы кеша и его очистки рекомендуем:
- Настроить автоматическую очистку кеша после публикации или обновления постов, чтобы посетители сразу видели актуальный контент.
- Использовать WP-Cron для регулярной очистки устаревшего кеша, чтобы не накапливались лишние файлы.
- Проверять, что очистка кеша не вызывает ошибок и не влияет на работу сайта.
- Регулярно проверять настройки плагина кеширования и обновлять его до последней версии.
Пример расширенной функции автоматической очистки кеша с логированием
function wpdetect_clear_cache_with_log() {
$log = [];
$cache_dir = WP_CONTENT_DIR . '/cache/';
if (!is_dir($cache_dir)) {
$log[] = 'Папка кеша не найдена.';
error_log(implode("\n", $log));
return;
}
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($cache_dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
$now = time();
$max_age = 86400; // 24 часа
$deleted_files = 0;
foreach ($files as $fileinfo) {
if ($fileinfo->isFile()) {
if ($now - $fileinfo->getMTime() > $max_age) {
if (@unlink($fileinfo->getRealPath())) {
$deleted_files++;
} else {
$log[] = 'Не удалось удалить: ' . $fileinfo->getRealPath();
}
}
}
}
$log[] = 'Удалено файлов кеша: ' . $deleted_files;
error_log(implode("\n", $log));
}
add_action('wpdetect_clear_cache_hook', 'wpdetect_clear_cache_with_log');
Логи будут записываться в файлы ошибок сервера, что поможет отследить успешность операции.
Заключение
Автоматизация удаления старого кеша в WordPress — важная задача для поддержания скорости и актуальности сайта. Используя WP-Cron, API плагинов кеширования и кастомные скрипты, вы можете настроить надежный механизм очистки, который не потребует вашего постоянного вмешательства. Если предпочитаете готовые решения, обратите внимание на плагин Clearfy Pro, который значительно упростит управление кешем и оптимизацию сайта в целом.