WordPress активно использует AJAX для повышения интерактивности сайта, однако слишком большое количество AJAX-запросов может негативно сказаться на производительности. Особенно это заметно на слабых хостингах и мобильных устройствах. В этой статье разберём, как выявить и удалить лишние AJAX-запросы, чтобы ускорить работу сайта без потери функционала.
Что такое AJAX-запросы и почему их нужно оптимизировать
AJAX (Asynchronous JavaScript and XML) — технология, позволяющая обновлять части страницы без полной перезагрузки. В WordPress AJAX используется как в ядре, так и в темах и плагинах для динамического обновления контента или выполнения действий.
Проблема возникает, когда плагинов и тем много, и они добавляют собственные AJAX-запросы, которые не всегда нужны на всех страницах. Это приводит к дополнительным HTTP-запросам, увеличению времени загрузки и нагрузке на сервер.
Оптимизация включает в себя выявление, отключение или ограничение AJAX-запросов там, где они не нужны.
Как определить, какие AJAX-запросы выполняются на сайте
Для начала нужно узнать, какие AJAX-запросы отправляются. Это можно сделать с помощью инструментов разработчика в браузере (обычно вкладка Network).
Откройте консоль разработчика (F12), перейдите на вкладку Network, выберите фильтр XHR и обновите страницу. Вы увидите все AJAX-запросы, их URL, ответ и время выполнения.
Обратите внимание на запросы к admin-ajax.php — это стандартный обработчик AJAX в WordPress. В URL обычно есть параметр action, который отвечает за вызов определённого обработчика.
Как отключить ненужные AJAX-запросы через functions.php
Если вы нашли AJAX-запросы, которые не нужны на конкретных страницах, их можно отключить программно. Для этого нужно знать, какой JavaScript добавляет эти запросы, и отключить скрипты или обработчики.
Пример отключения скрипта, добавляющего AJAX-запросы:
function wpexpert_deregister_ajax_scripts() {
if (!is_admin() && is_page('contact')) { // только на странице контактов
wp_dequeue_script('plugin-ajax-script');
wp_deregister_script('plugin-ajax-script');
}
}
add_action('wp_enqueue_scripts', 'wpexpert_deregister_ajax_scripts', 100);В этом примере мы отключаем скрипт с хендлом plugin-ajax-script на странице 'contact'. Это предотвратит выполнение AJAX-запросов этого скрипта.
Если AJAX-запросы идут из ядра WordPress или популярных плагинов, отключение скрипта может привести к потере функционала, поэтому будьте осторожны.
Удаление AJAX-обработчиков на стороне сервера
Кроме отключения скриптов, можно удалить обработчики AJAX на сервере. Для этого убирают экшены, которые регистрируют обработчики.
function wpexpert_remove_ajax_actions() {
// Пример удаления обработчика с именем 'my_ajax_action'
remove_action('wp_ajax_my_ajax_action', 'my_ajax_action_callback');
remove_action('wp_ajax_nopriv_my_ajax_action', 'my_ajax_action_callback');
}
add_action('init', 'wpexpert_remove_ajax_actions', 20);Удаление экшенов предотвращает выполнение серверного кода по AJAX, что уменьшает нагрузку.
Оптимизация AJAX-запросов с помощью плагина Clearfy Pro
Если хочется более простого решения, можно использовать плагин Clearfy Pro. Он позволяет отключать ненужные скрипты и функции WordPress, в том числе связанные с AJAX, без вмешательства в код.
Clearfy Pro предоставляет удобный интерфейс, где можно выбрать, какие AJAX-запросы отключить на фронте и в админке, что значительно ускоряет загрузку страниц.
Пример написания собственного фильтра для ограничения AJAX-запросов
Если вы разработчик, можно добавить фильтр, который будет проверять страницу и запрещать выполнение AJAX в нужных местах.
function wpexpert_disable_ajax_on_pages() {
if (!is_admin() && is_page(array('about', 'services'))) {
// Отключаем wp-admin ajax-скрипт
wp_dequeue_script('wp-admin');
wp_dequeue_script('jquery'); // если jQuery не нужен
}
}
add_action('wp_enqueue_scripts', 'wpexpert_disable_ajax_on_pages', 100);Этот код отключит скрипты, которые могут инициировать AJAX-запросы, на страницах 'about' и 'services'. Подобный подход позволяет гибко управлять загрузкой ресурсов.
Важные рекомендации и выводы
- Всегда делайте резервную копию перед внесением изменений в код сайта.
- Проверяйте работу сайта после отключения AJAX-запросов, чтобы не сломать важный функционал.
- Используйте инструменты анализа производительности, например, Query Monitor или GTmetrix, чтобы оценить эффект оптимизации.
- Для комплексного аудита AJAX-запросов можно применять плагин Debug Bar или WP Rocket, но отключайте их после тестирования.
Удаление и оптимизация AJAX-запросов — действенный способ ускорить WordPress-сайт, особенно если он перегружен плагинами и скриптами. Используйте описанные методы и инструменты для улучшения скорости и пользовательского опыта.