Удаление кэша AJAX-запросов в WordPress без плагинов

AJAX-запросы в WordPress широко используются для динамического обновления контента без перезагрузки страницы. Однако иногда браузеры или серверные прокси могут кэшировать ответы на AJAX-запросы, что приводит к отображению устаревших данных. В этой статье мы рассмотрим, как правильно настроить удаление или отключение кэша для AJAX-запросов в WordPress без использования сторонних плагинов.

Почему возникает кэширование AJAX-запросов?

По умолчанию браузеры и промежуточные серверы (например, CDN или прокси) могут кэшировать ответы на GET-запросы, включая AJAX-запросы. Это происходит потому, что HTTP протокол предполагает, что GET-запросы являются идемпотентными, и их результаты можно кешировать для оптимизации скорости загрузки.

В WordPress AJAX-запросы часто реализуются через admin-ajax.php, и если не указать специальные заголовки, браузер может использовать старый кэшированный ответ.

Для POST-запросов кэш обычно не применяется, но иногда и их можно заставить кэшироваться при неправильной настройке сервера.

Как отключить кэш для AJAX-запросов в WordPress (HTTP-заголовки)

Самый надежный способ — отправлять специальные HTTP-заголовки, которые запрещают кэширование ответа. Их можно добавить в функцию, обрабатывающую AJAX-запрос.

Пример функции обработчика AJAX-запроса с необходимыми заголовками:

add_action('wp_ajax_wp_puzzle_no_cache_ajax', 'wp_puzzle_no_cache_ajax_handler');
add_action('wp_ajax_nopriv_wp_puzzle_no_cache_ajax', 'wp_puzzle_no_cache_ajax_handler');

function wp_puzzle_no_cache_ajax_handler() {
    // Отключаем кэширование
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');

    // Ваш код обработки AJAX
    $data = array('time' => current_time('mysql'));

    wp_send_json_success($data);
}

Здесь:

  • Cache-Control: no-cache, no-store, must-revalidate — говорит браузеру и прокси не кэшировать ответ;
  • Pragma: no-cache — устаревший, но поддерживаемый заголовок для совместимости;
  • Expires: 0 — дата истечения срока действия ответа уже наступила.

Этим вы гарантируете, что ответ на AJAX-запрос не будет кешироваться.

Как удалить кэшированные AJAX-ответы на стороне клиента (JavaScript)

Иногда браузер может кэшировать GET-запросы, даже если сервер отправляет заголовки. Чтобы полностью исключить кэширование, можно добавить уникальный параметр к URL AJAX-запроса — например, временную метку.

Пример использования jQuery:

jQuery.ajax({
    url: ajaxurl + '?action=wp_puzzle_no_cache_ajax&_=' + new Date().getTime(),
    method: 'GET',
    success: function(response) {
        console.log('Ответ сервера:', response);
    }
});

Этот трюк заставит браузер считать каждый запрос уникальным и не использовать кэш.

Если вы используете fetch API:

fetch(ajaxurl + '?action=wp_puzzle_no_cache_ajax&_=' + Date.now(), {
    method: 'GET',
    credentials: 'same-origin'
})
.then(response => response.json())
.then(data => console.log('Ответ сервера:', data));

Особенности работы с POST AJAX-запросами

POST-запросы по умолчанию не кэшируются браузерами, но на некоторых серверах или при использовании CDN могут возникать нюансы. Рекомендуется также отправлять заголовки для запрета кэширования, как показано выше.

Пример POST-запроса с fetch:

fetch(ajaxurl, {
    method: 'POST',
    credentials: 'same-origin',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    },
    body: new URLSearchParams({
        action: 'wp_puzzle_no_cache_ajax'
    })
})
.then(response => response.json())
.then(data => console.log('Ответ сервера:', data));

Использование плагинов для управления кэшированием AJAX

Хотя задача решается кодом, иногда удобнее использовать плагины с расширенными функциями управления кэшом. Например, Clearfy Pro позволяет эффективно управлять кэшированием и отключать его для отдельных запросов.

Также WPRemark и My Popup используют AJAX, где важно контролировать кэширование для актуальных данных.

Диагностика и проверка отключения кэша AJAX

Чтобы убедиться, что кэш отключен, можно использовать инструменты разработчика в браузере (Chrome DevTools, Firefox Developer Tools):

  • Откройте вкладку Network;
  • Отправьте AJAX-запрос;
  • Выберите запрос admin-ajax.php и посмотрите заголовки Response Headers — должны присутствовать Cache-Control: no-cache, no-store, must-revalidate и другие заголовки;
  • Проверьте, что в колонке Size не отображается (from cache) или аналогичные отметки.

Если кэш всё ещё используется, попробуйте добавить параметр _ с уникальным значением к URL запроса, как показано в примерах выше.

Резюме: практические шаги для удаления кэша AJAX в WordPress

  1. Добавьте в обработчик AJAX-запроса заголовки для отключения кэширования;
  2. На стороне клиента добавьте уникальный параметр в URL GET-запроса;
  3. Для POST-запросов также отправляйте заголовки отключения кэша;
  4. Проверьте работу через инструменты разработчика;
  5. При необходимости используйте плагины, например Clearfy Pro, для расширенного контроля.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WordPress: как автоматически отключать неиспользуемые плагины для оптимизации сайта
07.03.2026
Как использовать WPRemark для создания отзывов и рецензий в WordPress
07.02.2026
Как использовать REST API в WordPress для создания приложений
05.12.2025
WooCommerce: автоматическое изменение статуса заказа при проблемах с платежной системой
07.05.2026
Как создать безопасное AJAX-наполнение в WordPress с примером кода
20.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее