Кэширование — это важный механизм, который помогает ускорить загрузку страниц сайта на WordPress. Однако иногда кэш может мешать обновлению контента, особенно при внесении изменений в темы, плагины или настройки. В этой статье мы подробно рассмотрим, как удалить кэш в WordPress своими руками, без использования тяжёлых плагинов, а также приведём примеры кода для решения наиболее распространённых проблем.
Почему важно уметь вручную очищать кэш WordPress
Большинство пользователей полагаются на плагины кэширования, такие как WP Super Cache или W3 Total Cache. Они удобны, но иногда возникают ситуации, когда кэш не очищается автоматически или плагин конфликтует с другими компонентами сайта. В таких случаях важно знать, как быстро и эффективно удалить кэш вручную, чтобы изменения на сайте стали видны сразу.
Кроме того, некоторые хостинги используют свой серверный кэш, который не контролируется плагинами. Владельцу сайта полезно уметь работать с кэшем на разных уровнях.
Типы кэша в WordPress и способы их очистки
Объектный кэш и транзиенты
WordPress использует объектный кэш для хранения временных данных в памяти. Транзиенты — это тип временных опций, которые хранятся в базе данных с указанием времени жизни.
Для удаления всех транзиентов можно использовать следующий код:
function wpeducation_delete_all_transients() {
global $wpdb;
$transients = $wpdb->get_col("SELECT option_name FROM $wpdb->options WHERE option_name LIKE '_transient_%'");
foreach ( $transients as $transient ) {
$key = str_replace('_transient_', '', $transient);
delete_transient($key);
}
}
wpeducation_delete_all_transients();Этот код перебирает все опции, которые начинаются с _transient_, и удаляет их. Такой подход полезен при проблемах с устаревшими временными данными.
Кэш файловых систем: кеширование страниц и CSS/JS
Плагины кэширования часто создают файлы кэша на сервере, которые нужно очистить вручную либо через интерфейс плагина, либо с помощью FTP/SSH.
Например, для WP Super Cache файлы обычно находятся в папке wp-content/cache/supercache/. Для очистки можно написать функцию, которая удалит содержимое этой директории:
function wpeducation_clear_supercache() {
$cache_dir = WP_CONTENT_DIR . '/cache/supercache/';
if (is_dir($cache_dir)) {
$files = glob($cache_dir . '*', GLOB_MARK);
foreach ($files as $file) {
if (is_dir($file)) {
wpeducation_delete_dir($file);
} else {
unlink($file);
}
}
}
}
function wpeducation_delete_dir($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file")) ? wpeducation_delete_dir("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
wpeducation_clear_supercache();Эта функция рекурсивно удаляет все файлы и папки в каталоге кэша. Запускайте её с осторожностью и только при необходимости!
Кэш браузера и CDN
Браузерный кэш и кэш CDN (например, Cloudflare) не контролируются WordPress напрямую. Чтобы обновить содержимое, необходимо:
- Настроить правила кэширования в
.htaccessили nginx конфигурациях - Очистить кэш в панели управления CDN
- Использовать версионирование ресурсов (например, добавлять query string к CSS/JS)
Пример добавления версии к файлам стилей в WordPress для обхода кэша браузера:
function wpeducation_enqueue_styles() {
wp_enqueue_style('theme-style', get_stylesheet_uri(), array(), filemtime(get_stylesheet_directory() . '/style.css'));
}
add_action('wp_enqueue_scripts', 'wpeducation_enqueue_styles');Здесь в качестве версии передаётся время последней модификации файла, что заставляет браузер загружать обновлённый файл.
Плагины для управления кэшем: обзор и советы по использованию
Если вы предпочитаете использовать плагины, рекомендуем обратить внимание на:
- WP Super Cache — простой и лёгкий, подходит для большинства сайтов
- W3 Total Cache — более продвинутый, с большим числом настроек
- LiteSpeed Cache — отлично работает на серверах LiteSpeed, имеет много функций
Чтобы очистить кэш через код, можно вызвать функции плагинов. Пример для WP Super Cache:
if (function_exists('wp_cache_clear_cache')) {
wp_cache_clear_cache();
}Однако многие плагины не предоставляют официального API для очистки кэша через код, поэтому приходится использовать либо их интерфейс, либо удалять файлы вручную.
Автоматизация очистки кэша при обновлении контента
Чтобы кэш автоматически очищался при публикации или обновлении поста, можно добавить хук, который будет запускать функцию очистки. Например, для удаления транзиентов и файлов кэша:
function wpeducation_clear_cache_on_save_post($post_id) {
if ( wp_is_post_revision($post_id) ) {
return;
}
wpeducation_delete_all_transients();
wpeducation_clear_supercache();
}
add_action('save_post', 'wpeducation_clear_cache_on_save_post');Этот код поможет поддерживать актуальность содержимого на сайте без ручных действий.
Диагностика проблем с кэшем: советы и практические рекомендации
Если изменения на сайте не отображаются, проверьте:
- Работает ли плагин кэширования и как настроен
- Удалены ли старые файлы кэша на сервере
- Не сохраняется ли кэш в браузере (используйте режим инкогнито для проверки)
- Есть ли кэш CDN и очищен ли он
Для диагностики кэширования можно использовать плагины, например, Query Monitor или Debug Bar, которые покажут, используются ли кэшированные данные.
Также полезно добавить временные метки в вывод страниц или комментарии, чтобы проверить, обновляется ли страница.