AJAX (Asynchronous JavaScript and XML) широко используется в WordPress для динамического обновления контента без перезагрузки страницы. Однако чрезмерное или нерациональное использование AJAX-запросов может замедлять сайт, увеличивать нагрузку на сервер и ухудшать пользовательский опыт. В этой статье мы подробно рассмотрим, как отключить ненужные AJAX-запросы в WordPress для оптимизации скорости сайта, а также приведем практические примеры с кодом и плагинами.
Что такое AJAX в WordPress и почему его стоит отключать
AJAX-запросы в WordPress выполняются с помощью специального файла admin-ajax.php, который обрабатывает асинхронные запросы от фронтенда и бэкенда. Многие плагины и темы используют AJAX для обновления контента, отправки форм, загрузки постов и других операций.
Если на сайте активно работают несколько плагинов с AJAX, это может привести к:
- Увеличению времени отклика сервера;
- Росту количества запросов на сервер;
- Замедлению загрузки страниц для пользователей;
- Потере производительности при пиковых нагрузках.
Поэтому отключение ненужных AJAX-запросов — эффективный способ ускорить сайт без потери функционала.
Как определить, какие AJAX-запросы можно отключить
Перед тем, как отключать AJAX, нужно понять, какие именно запросы загружают сайт. Для этого:
- Откройте браузер, перейдите на сайт и запустите Инструменты разработчика (F12).
- Перейдите на вкладку «Network» (Сеть).
- Отфильтруйте запросы по
admin-ajax.php. - Просмотрите, какие плагины или темы выполняют эти запросы (обратите внимание на параметры
actionи другие данные).
После этого вы сможете понять, какие AJAX-запросы отвечают за какую функциональность, и отключить те, которые не нужны.
Отключение стандартных AJAX-запросов WordPress, которые не используются
Некоторые стандартные AJAX-действия WordPress загружаются автоматически и могут быть отключены, если не используются. Например, AJAX для сердечек (like), обновления профиля, подсказок и т.д.
Для отключения конкретных AJAX-действий можно использовать фильтр wp_ajax_{action} с функцией, которая возвращает ошибку или просто завершает выполнение.
Пример: отключение AJAX для сердечек (like) в WordPress
add_action('wp_ajax_nopriv_clearfy_disable_heartbeat', 'clearfy_disable_heartbeat');
add_action('wp_ajax_clearfy_disable_heartbeat', 'clearfy_disable_heartbeat');
function clearfy_disable_heartbeat() {
wp_die(); // Завершаем запрос без выполнения
}
// Отключаем Heartbeat API
add_action('init', function() {
wp_deregister_script('heartbeat');
});Этот код отключит Heartbeat API, который часто работает через AJAX и может нагружать сервер.
Отключение AJAX-запросов в популярных плагинах
Многие плагины добавляют собственные AJAX-запросы. Если вы не используете их функционал, рекомендуется отключать ненужные запросы.
Пример: отключение AJAX-запросов Contact Form 7
Contact Form 7 использует AJAX для отправки форм. Если вы хотите отключить AJAX и сделать отправку формы стандартной (перезагрузка страницы), добавьте следующий код:
add_filter('wpcf7_load_js', '__return_false');
add_filter('wpcf7_load_css', '__return_false');После этого формы будут отправляться без AJAX, что снизит количество асинхронных запросов. Однако UX может ухудшиться, поэтому используйте это с осторожностью.
Пример: отключение AJAX-запросов WooCommerce
WooCommerce активно использует AJAX для обновления корзины, фильтров и категорий. Отключить AJAX полностью не рекомендуется, но можно ограничить некоторые запросы.
add_action('wp_enqueue_scripts', function() {
if (is_shop() || is_product_category()) {
wp_dequeue_script('wc-cart-fragments'); // Отключаем AJAX обновление корзины
}
});Этот код отключит AJAX обновление корзины на страницах магазина, что уменьшит количество запросов, но при этом оставит другую функциональность WooCommerce.
Создание собственного плагина для контроля AJAX-запросов на сайте clearfy.ru
Для удобства управления AJAX-запросами можно создать простой плагин, который будет отключать ненужные действия.
Пример минимального плагина clearfy-disable-ajax.php:
<?php
/**
* Plugin Name: Clearfy Disable AJAX
* Description: Отключает ненужные AJAX-запросы для ускорения сайта
* Version: 1.0
* Author: Clearfy
*/
// Отключаем Heartbeat API
add_action('init', function() {
wp_deregister_script('heartbeat');
});
// Отключаем Cart Fragments WooCommerce
add_action('wp_enqueue_scripts', function() {
if (class_exists('WooCommerce')) {
wp_dequeue_script('wc-cart-fragments');
}
});
// Отключаем AJAX Contact Form 7
add_filter('wpcf7_load_js', '__return_false');
add_filter('wpcf7_load_css', '__return_false');
// Отключение других AJAX действий можно добавить здесь
?>Этот плагин можно доработать и расширить под конкретные задачи, добавляя отключение ненужных AJAX-действий.
Дополнительные советы по оптимизации AJAX в WordPress
Помимо отключения ненужных запросов, стоит учитывать следующие практики:
- Кеширование AJAX-ответов с помощью Transients API или внешнего кеша.
- Использование REST API вместо admin-ajax.php, так как REST API работает быстрее и эффективнее.
- Минимизация и оптимизация JS-скриптов, вызывающих AJAX.
- Мониторинг запросов с помощью плагинов типа Query Monitor.
Эти методы помогут не только отключить лишние запросы, но и снизить нагрузку на сервер в целом.
Выводы
Отключение ненужных AJAX-запросов — действенный способ ускорить WordPress-сайт, уменьшить нагрузку на сервер и улучшить пользовательский опыт. Главное — внимательно анализировать, какие запросы действительно нужны, а какие можно отключить без потери функционала. Используйте приведенные примеры кода и создавайте собственные решения для оптимизации AJAX на вашем сайте clearfy.ru.