На многих сайтах WordPress можно столкнуться с проблемой замедленной загрузки и отображения библиотеки jQuery, которая необходима для работы различных скриптов и плагинов. Особенно это заметно на мобильных устройствах и при медленном интернете. В этой статье мы подробно разберем, почему возникает такая задержка, как диагностировать проблему и какие есть способы ее устранения с помощью оптимизации загрузки jQuery и других связанных скриптов.
Почему замедляется загрузка jQuery в WordPress: основные причины
WordPress по умолчанию включает библиотеку jQuery, которая загружается из своей папки и зачастую в не минифицированном виде, либо в неподходящем месте шаблона. Это приводит к следующим проблемам:
- Блокировка рендеринга страницы: если jQuery загружается в
<head>без атрибутаdeferилиasync, браузер ждет загрузки скрипта, прежде чем продолжить отображение; - Конфликты с другими плагинами: некоторые плагины подключают собственные версии jQuery, что вызывает дублирование и замедляет загрузку;
- Отсутствие отложенной загрузки: jQuery загружается сразу, хотя может понадобиться только на определенных страницах или для определенных функций;
- Некорректное использование сторонних CDN: если CDN недоступен или медленен, это тоже тормозит загрузку.
Все эти факторы суммируются и приводят к заметному ухудшению скорости и пользовательского опыта.
Как выявить проблему с jQuery и проверить ее влияние на сайт
Для начала важно убедиться, что именно jQuery является узким местом. Для этого:
- Используйте инструменты разработчика в браузере (Chrome DevTools, Firefox Developer Tools) и откройте вкладку Network. Отфильтруйте по скриптам и посмотрите время загрузки
jquery.js. - Проверьте, где именно в HTML выводится скрипт: в
<head>или перед</body>. Если в<head>, это может блокировать рендеринг. - Протестируйте сайт с отключенными плагинами по одному, чтобы выявить, какой из них может подключать дополнительную или устаревшую версию jQuery.
- Используйте PageSpeed Insights или GTmetrix для анализа влияния jQuery на скорость загрузки.
Практические способы оптимизации загрузки jQuery в WordPress
Далее рассмотрим несколько проверенных способов, которые помогут ускорить загрузку jQuery и снизить ее негативное влияние.
1. Перенос загрузки jQuery в подвал сайта с атрибутом defer
По умолчанию WordPress подключает jQuery в wp_head, что блокирует рендеринг. Перенос скрипта в конец страницы и добавление атрибута defer позволит браузеру сначала отобразить контент, а потом загрузить скрипт.
Для этого можно добавить следующий код в файл functions.php вашей темы:
function wpurok_defer_jquery_loading() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', includes_url('/js/jquery/jquery.js'), array(), null, true);
add_filter('script_loader_tag', 'wpurok_add_defer_attribute', 10, 3);
}
}
add_action('wp_enqueue_scripts', 'wpurok_defer_jquery_loading');
function wpurok_add_defer_attribute($tag, $handle, $src) {
if ('jquery' !== $handle) {
return $tag;
}
return '<script src="' . $src . '" defer></script>';
}Этот код отменяет стандартное подключение jQuery в head, регистрирует его с загрузкой в подвал (true в wp_register_script) и добавляет defer.
2. Использование CDN с локальным запасным вариантом
Подключение jQuery через CDN Google или jQuery CDN ускоряет загрузку за счет кеша в браузерах пользователей, но есть риск недоступности. Чтобы этого избежать, можно настроить локальную загрузку при падении CDN.
Вот пример функции для functions.php:
function wpurok_jquery_cdn_fallback() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js', array(), null, true);
wp_enqueue_script('jquery');
add_action('wp_footer', function() {
echo "\n<script>window.jQuery || document.write('<script src=\"" + '" . includes_url('/js/jquery/jquery.js') . "\"><\/script>')</script>\n";
});
}
}
add_action('wp_enqueue_scripts', 'wpurok_jquery_cdn_fallback');Таким образом, сначала загружается jQuery с CDN, если он недоступен — браузер загрузит локальную версию.
3. Удаление jQuery на страницах, где он не нужен
Если ваш сайт использует jQuery только в определенных местах, имеет смысл отключать его загрузку на остальных страницах, чтобы снизить нагрузку.
Пример кода:
function wpurok_conditional_jquery_loading() {
if (!is_admin()) {
if (!is_page('kontakt') && !is_singular('product')) { // пример страниц
wp_dequeue_script('jquery');
wp_deregister_script('jquery');
}
}
}
add_action('wp_enqueue_scripts', 'wpurok_conditional_jquery_loading', 100);Замените is_page('kontakt') и is_singular('product') на условия, соответствующие вашим страницам с использованием jQuery.
Полезные плагины для оптимизации jQuery и скриптов в WordPress
Если вы хотите ускорить сайт без ручного кода, рекомендуем обратить внимание на следующие плагины:
- Clearfy Pro — плагин для оптимизации производительности, в том числе умеет управлять подключением скриптов и отключать ненужные библиотеки;
- ABC Pagination — улучшает пагинацию без лишних загрузок, снижая зависимости от jQuery;
- My Popup — современный плагин для всплывающих окон, который может работать без jQuery, что сокращает нагрузку.
Итог: комплексный подход к ускорению jQuery в WordPress
Чтобы эффективно решить проблему замедленной загрузки jQuery, рекомендуем комбинировать несколько методов:
- Переносить загрузку jQuery в подвал с атрибутом defer;
- Подключать jQuery через надежный CDN с локальным fallback;
- Отключать jQuery на страницах, где он не нужен;
- Использовать оптимизационные плагины, например, Clearfy Pro;
- Проверять конфликтующие плагины и обновлять их до последних версий.
Такой подход позволит ускорить загрузку страниц, улучшить пользовательский опыт и снизить нагрузку на сервер.