Кеширование — важный инструмент для ускорения работы сайта на WordPress, однако накопление устаревших кеш-файлов может привести к замедлению и проблемам с отображением контента. В этой статье мы разберём, как настроить автоматическое удаление старого кеша без использования плагинов, используя стандартные возможности PHP и WordPress.
Почему важно удалять устаревший кеш в WordPress
Многие пользователи WordPress устанавливают плагины кеширования, но редко заботятся об очистке старых кеш-файлов. Это приводит к следующим проблемам:
- Переполнение дискового пространства на сервере;
- Загрузка устаревших данных пользователям;
- Падение производительности сайта из-за большого количества файлов;
- Проблемы с отображением обновлённого контента.
Автоматизация удаления кеша позволяет поддерживать сайт в оптимальном состоянии без постоянного ручного вмешательства.
Где хранится кеш и как его можно очистить
В зависимости от выбранного метода кеширования кеш-файлы могут храниться в разных местах: в папках плагинов (например, WP Super Cache, W3 Total Cache), в объектном кеше (Redis, Memcached) или в кеше браузера. В данной статье мы сосредоточимся на файловом кеше, так как он наиболее распространён и доступен для контроля.
Пример: очистка кеша плагина WP Super Cache
WP Super Cache хранит кеш в папке wp-content/cache/supercache/. Для очистки старых кеш-файлов можно написать функцию, которая удаляет файлы старше определённого времени.
Реализация автоматического удаления кеша с помощью кода
Создадим функцию wp24_clear_old_cache(), которая будет сканировать папку кеша и удалять файлы старше 24 часов.
function wp24_clear_old_cache() {
$cache_dir = WP_CONTENT_DIR . '/cache/supercache/'; // путь к кешу
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($cache_dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
$now = time();
$max_age = 24 * 60 * 60; // 24 часа
foreach ($files as $fileinfo) {
if ($fileinfo->isFile()) {
$file_age = $now - $fileinfo->getMTime();
if ($file_age > $max_age) {
unlink($fileinfo->getRealPath());
}
}
}
}
Эта функция рекурсивно проходит по всем файлам в папке кеша и удаляет те, что старше 24 часов, что позволяет поддерживать кеш в актуальном состоянии.
Как запустить очистку кеша автоматически с помощью WP-Cron
Чтобы функция запускалась регулярно, создадим задачу WP-Cron. Добавим следующий код в файл functions.php вашей темы или в отдельный плагин:
// Регистрируем событие при активации темы или плагина
function wp24_schedule_cache_cleanup() {
if (!wp_next_scheduled('wp24_daily_cache_cleanup')) {
wp_schedule_event(time(), 'daily', 'wp24_daily_cache_cleanup');
}
}
add_action('wp', 'wp24_schedule_cache_cleanup');
// Хук для запуска функции очистки
add_action('wp24_daily_cache_cleanup', 'wp24_clear_old_cache');
// Отмена расписания при деактивации
function wp24_clear_schedule() {
$timestamp = wp_next_scheduled('wp24_daily_cache_cleanup');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wp24_daily_cache_cleanup');
}
}
// Для плагина: register_deactivation_hook(__FILE__, 'wp24_clear_schedule');
Теперь функция wp24_clear_old_cache будет запускаться один раз в день и удалять устаревший кеш.
Дополнительные советы по работе с кешем в WordPress
Чтобы избежать проблем с кешем, стоит учитывать следующие рекомендации:
- Настраивайте время жизни кеша в настройках плагина кеширования, если такая опция есть;
- Регулярно проверяйте размер папки кеша и очищайте её при необходимости;
- Используйте инструменты для очистки кеша при обновлении контента, например, вручную или через хуки;
- Если используете объектный кеш (Redis, Memcached), настраивайте автоматическую очистку через их конфигурацию.
Пример интеграции с плагином Clearfy Pro для управления кешем
Плагин Clearfy Pro предлагает расширенные возможности по управлению кешем и оптимизации сайта. Он позволяет автоматически очищать кеш при изменении контента, а также удалять устаревшие кеш-файлы по расписанию.
Использование такого решения подойдет тем, кто хочет облегчить себе поддержку сайта и повысить его производительность без глубоких технических знаний.