Как ускорить WordPress — избавляемся от admin-ajax. Как уменьшить нагрузку на сервер с помощью admin-ajax в WordPress Плагин Heartbeat Control и его настройки

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

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

Что такое admin-ajax.php в WordPress?

Еще в 2013 году, WordPress представил WordPress Heartbeat API, который обеспечил несколько важных функций, такие как функция автосохранения, по истечении логина предупреждения блокировки в то время как другой пользователь пишет или редактирует пост на WordPress.

Две очень характерные особенности Heartbeat API:

1. Автосохранение

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

2. Сообщение блокировки

Всякий раз, когда вы пытаетесь изменить пост, с которым работает другой пользователь, появится всплывающее предупреждение о ситуации. Есть три действия, доступные для вас.

Вышеперечисленные особенности стали возможными благодаря API WordPress Heartbeat, который создает связь между сервером и браузером для соответствующего сообщения и ответов.

WordPress Heartbeat API генерирует запросы для связи с сервером и запускает события на прием/ответ данных. Как правило, это увеличивает нагрузку на сервер и в конечном итоге замедляет панель администратора WordPress.

Живой пример

Мы вошли в приборную панель WordPress и приступили к редактированию поста. Далее, мы оставили вкладку открытой в течение нескольких минут, и начали просмотр других вкладок. Приборная панель по – прежнему в системе, и вы можете увидеть, что admin-ajax непрерывно посылает запросы .

В соответствии с упомянутым выше билетом, администратор-ajax.php в WordPress генерирует запросы через каждые 15 секунд. Запросом может быть любая связь с сервером.

Ускорить панель администратора WordPress

Чтобы ускорить бэкэнд WordPress, лучший подход, это отключить Heartbeat API или по крайней мере установить более продолжительный промежуток времени, так чтобы он не генерировал запросы на сервере через каждые несколько секунд.

Установить плагин Heartbeat Control

Войдите в админку WordPress и перейдите к Плагины >> Добавить новый , найдите Heartbeat Control , установите и активируйте его.

Перейдите на вкладку Настройки >> Настройки Control Heartbeat . Там вы найдете три раскрывающихся меню для настройки плагина.

Вы можете выбрать ту область, где Heartbeat API будет работать. Есть три варианта на выбор:

  • WordPress Dashboard : Это позволит Heartbeat API в WordPress панели.
  • Frontend : Это позволит API в веб – интерфейсе.
  • Редактор сообщений : Отметьте этот флажок, если вы хотите, позволить Heartbeat API включить на автосохранение и блокировки почтовых функций.

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


Эта выпадающее меню позволяет установить интервал времени, в пределах 0 – 300 секунд, чтобы выполнить админ Ajax запросы. Если установить его на 120 секунд , то запрос будет сгенерирован через каждые 120 секунд. Это позволит значительно снизить нагрузку на сервер. Настройте его в соответствии с вашими потребностями.

Создание нескольких правил

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

Теперь, когда вы настроили все, настало время, проверить, какие плагины замедляют веб-сайт с помощью файла admin-ajax.php.

Перейдите к GTmetrix, введите URL вашего сайта. Это займет несколько минут, чтобы проанализировать сайт. После этого перейдите к закладке Waterfall, и вы увидите, сколько времени файл принимает подключения и ответ. Прокрутите немного вниз, и посмотреть, есть ли запись POST админ-ajax.php . Если да, расширьте его и перейдите на вкладку Post. Здесь вы можете определить виновника. В нашем случае, плагин «desktop switch» использует файл admin-ajax.php и непрерывно посылает запросы на сервер. Это время, чтобы принять решение, либо заменить его другим плагином или удалить его.

Заключительные слова

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

Есть только два решения этой проблемы. Либо отключить Heartbeat API/включить его только в нескольких местах.

Если вы используете какой – либо плагин кэширования, например, W3TC, не забудьте отключить кэш объектов. Это также ускорит приборную панель WordPress.

Если у вас есть какие-либо предложения или запрос, не стесняйтесь оставить комментарий ниже.

Всем привет. Продолжаем тему ускорения сайта на wordpress. В статье мы убрали лишнее из файлов, но еще не все. Вообще wordpress тем и хорош, что дает возможность изменять код так, как хочется, под разные желания.

Когда вы покупаете хостинг, то, конечно, вы прикидываете сколько памяти надо для сайта и какая нагрузка будет. И, если вы ограничены в средствах, то надо бы поэкономить эти параметры.

Есть такой механизм в движке – HeartBeat API . Зачем он нужен? Что это такое?

HeartBeat API отвечает за

  • за автосохранение;
  • за блокировку страницы или записи для всех других администраторов сайта, пока вы что-то там редактируете;
  • за обновления информации о присутствии пользователя в консоли.

Вы понимаете, надеюсь, что в этот момент происходит просто пожирание ресурсов, ведь идет постоянные запросы на хостинг к файлу admin-ajax.php. А если вы любите открывать сразу несколько вкладок админпанели, то это вообще пипец. Простите меня за жаргон. Запросы-то отправляются автономно для каждой вкладки.

По существу, HeartBeat API – это наиболее ресурсоёмкий механизм из всех в движке WordPress .

Нужен ли вам такой механизм? Это конечно каждый сам для себя решает. Мне вот не нужен.

Считается, что есть смысл отключить, вы являетесь единственным администратором, а также, если в вашем аккаунте ресурсов достаточно, но во время нахождения админа в консоли нагрузки нарастают, причем значительно.

По-моим наблюдениям, после выключения HeartBeat API, занимаемый объем моего сайта уменьшился почти 2,5 раза! Я серьезно. Жаль, не сделала скрин, а возвращаться в исходное состояние не хочется.

Как ускорить сайт на wordpress, выключив HeartBeat API

Отключение HeartBeat API кодом

Все очень просто. Надо дописать в начало файла functions.php, сразупосле тега

Add_action("init", "stop_heartbeat", 1); function stop_heartbeat() { wp_deregister_script("heartbeat"); }

И будет вам счастье.

Внимание! Этот код может не подойти вашему сайту. Все зависит от установленных темы, плагинов и настроек. Можно попробовать и, если код будет несовместим с каким-нибудь элементом сайта или вообще что-то сломается и не будет работать, всегда можно все вернуть назад. Просто сотрите код.

Плагин HeartBeat Control

Не дружите с кодами и боитесь навредить своему сайту? Есть для вас такое решение.

Установите плагин HeartBeat Control (в консоли выбрать плагины, установить новый, ищем в поиске плагин, установка и активирование).

Переходим в настройки (в консоли Инструменты -> HeartBeat Control). В настройках выбрать можно такие параметры:

1. Отключить или нет HeartBeat для всего сайта или использование его для некоторых разделов.

2. Можно и нужно отредактировать частоту запросов к файлу admin-ajax.php. При установке она обозначена, скорее всего, 15 секунд. Если изменить, скажем, до 30 секунд, то расход ресурсов уменьшиться на эти запросы сразу на 25%! А если время еще увеличить, то еще больше. Впечатляет, да?

Внимание!

  • Отключение HeartBeat API ведет к отключению функции автосохранения. Иногда все-таки сохраняйте страницы и записи при их редакции (по мере необходимости).
  • Отключение HeartBeat API происходит в конкретном шаблоне. Если вы шаблон поменяете, то все надо сделать заново.
  • Если вы обновили текущую тему, то после обновления отключение надо повторить.

Всем удачи!

2016-05-05T09:48:44+00:00 Надежда WordPress как ускорить wordpress

Всем привет. Продолжаем тему ускорения сайта на wordpress. В статье Как ускорить wordpress с помощью минимизации CSS, HTML и Javascript мы убрали лишнее из файлов, но еще не все. Вообще wordpress тем и хорош, что дает возможность изменять код так, как хочется, под разные желания. Когда вы покупаете хостинг, то, конечно, вы прикидываете...

Надежда Трофимова [email protected] Administrator Блог сайт

Возможно Вас также заинтересует:

Как сделать Фавикон для сайта

Фавиконом называется это красивый значок, который Все видят возле названия сайта в браузере. Фавикон позволяет выделиться сайту, как в закладках браузера, так и в...

Красивые кнопки для сайта

Всем доброго времени суток. Вдруг есть желающие на своем сайте разместить красивые кнопки, а найти они не могут. В самом деле в поисковиках я пыталась...

Пример 404 страницы

Здравствуйте, уважаемый читатель моего блога. Эта статья абсолютно ни о чем, просто, наконец то руки дошли до страницы 404.

Как и куда прописываются теги Title и Description

Что это такое - теги Title и Description? Эти теги необходимы для оптимизации Вашего сайта. Если неправильно прописаны теги, поисковые системы не проиндексируют Вашу статью. Много...

Распространенный сценарий при работе с WordPress – диагностика повышенного использования admin-ajax.php. Если вы некоторое время работаете с WordPress, вы, скорее всего, сталкивались с этой проблемой при запуске сторонних тестов скорости или проверке серверных логов доступа. Обычно повышенное использование admin-ajax.php связано с применением сторонних плагинов либо частыми некэшируемыми запросами из панели администратора, основанными на Heartbeat API (к примеру, автосохранение черновиков). Очень важно сразу же выявлять такие высокие всплески обращений к admin-ajax.php, поскольку они могут вести к тому, что сайт будет недоступен. Ознакомьтесь с приведенными ниже рекомендациями по устранению проблем с admin-ajax.php в WordPress.

Что представляет собой файл admin-ajax.php?

Сам по себе файл admin-ajax.php не является плохим при грамотном его использовании. Он выступает частью ядра. Файл был добавлен командой разработчиков WordPress в релизе 3.6. Цель admin-ajax.php – создать соединение между браузером и сервером с помощью AJAX. Это позволяет использовать расширенные функции, среди которых улучшенное автосохранение, отслеживание версий, таймауты логина, управление сеансом, а также уведомления о блокировке записи при редактировании ее несколькими авторами. Все эти возможности великолепны, особенно для тех пользователей, которые поддерживают сайты с несколькими авторами и администраторами.

«Идея состоит в том, чтобы реализовать относительно простой API, который будет отправлять XHR запросы на сервер каждые 15 секунд и запускать события (или callback) при получении данных. Другие компоненты тоже смогут «подцепляться» или получать уведомления об активности других пользователей. Это можно применять для блокировки одновременного редактирования виджетов или меню, либо выполнения других задач, требующих регулярных обновлений с сервера»

Если вы не являетесь технически подкованным пользователем, то в таком случае единственная ситуация, которая будет вам важна в контексте admin-ajax.php – это попытка понять, почему этот файл замедляет скорость в тестах (к примеру, в Pingdom). Либо вы можете увидеть кучу запросов к этому файлу в логах доступа хостинга.

Появление admin-ajax.php в тестах скорости и логах доступа обычно является результатом двух различных сценариев: одного во фронтэнде и второго в бэкэнде. Об этом мы поговорим далее.

Плагины могут приводить к замедлению admin-ajax.php

Самая популярная проблема, с которой сталкиваются пользователи в контексте admin-ajax.php, вызвана сторонними плагинами. Обычно это видно во фронтэнде и отображается в тестах скорости. Разработчики используют этот файл или AJAX для добавления функционала к своим плагинам. Если вы видите запрос к admin-ajax.php, это еще не означает, что он обязательно будет замедлять сайт. AJAX загружается после представления страницы, и некоторые запросы могут загружаться асинхронно. Но это не всегда означает и то, что разработчик выполнил загрузку грамотно и написал эффективный код в плане производительности.

Ниже представлены примеры того, как мы быстро диагностировали замедление работы admin-ajax.php. Мы использовали GTmetrix, поскольку он позволяет нам изучать данные отдельных записей и ответов. Pingdom, к сожалению, не позволяет нам видеть запросы данных в формах. Вы также можете использовать Google Chrome Devtools или WebPageTest.

Высокая нагрузка на admin-ajax.php при использовании плагина Visual Composer

Ниже приведен наш WordPress сайт, на котором мы столкнулись с очень высокими задержками при использовании admin-ajax.php. Как вы можете видеть по GTmetrix, задержка запросов к admin-ajax.php составляет более 8 секунд. Остальная часть «водопада» выглядит нормально, но такую задержку нужно обязательно решать владельцам сайтов.

Если вы щелкнете по запросу POST admin-ajax.php, вы увидите следующие три вкладки: Headers, Post и Response. При диагностике рассматриваемых нами проблем нас будут интересовать только вкладки Post и Response. Подсказки можно видеть во вкладке Response. Мы видим, что часть запроса связана со скриптом vc_shortcodes-custom-css.

Быстрое копирование и вставка в Google помогают понять, что проблема вызвана плагином Visual Composer.

Следующий шаг для пользователя – убедиться в том, что плагин Visual Composer полностью обновлен. Если да, то в таком случае необходимо обратиться к разработчикам плагина и рассказать им о проблеме с admin-ajax.php. На самом деле это достаточно распространенная проблема, если судить по постам на Stack Overflow. Если разработчик не способен решить ее в своем плагине, всегда найдется несколько альтернативных плагинов, которые делают примерно то же самое – в этом и состоит мощь WP. К примеру, если вам нужны билдеры страниц, то вы можете попробовать Beaver Builder или Elementor.

Высокая задержка с admin-ajax.php из-за плагина Notification Bar

Второй пример, с которым столкнулись мы сами, произошел после установки стороннего плагина. Мы заметили резкий подъем обращений к admin-ajax.php.

Опять же, если вы нажмете на запрос POST admin-ajax.php, то вы сможете исследовать все в деталях. Мы видим, что в данных присутствует строка «action=mtsnb_add_impression&bar_id=88&ab_variation=none».

Как правильно, первая часть действия post обычно относится к CSS классу плагина. Мы делаем быстрый поиск в Google по «mtsnb» и обнаруживаем, что этот класс используется в плагине Notification Bar, который запущен у нас на сайте.

Если вы разработчик, то есть и другие способы отследить, какой плагин может генерировать ответ POST, однако мы считаем, что и описанные в статье методы являются очень эффективными.

Дедовский метод определения источника admin-ajax.php запросов

Выше мы привели несколько простых способов поиска плагина на WordPress сайте, который может приводить к данной проблеме с admin-ajax.php. По нашему опыту, эти способы работают в 99% случаев. Однако бывает и так, что данные POST или действия могут быть не такими понятными, а потому вам придется двигаться старым проверенным путем. Просто отключите все плагины на своем WordPress сайте. Запустите тест скорости. Если admin-ajax.php нигде не обнаружится, то включайте по очереди каждый плагин и проводите тест скорости. Таким образом вы быстро выявите проблемный плагин.

CPU-проблемы с admin-ajax.php в бэкэнде

Вторая серьезная проблема заключается в том, что WordPress Heartbeat API использует admin-ajax.php для запуска вызовов AJAX от веб-браузера, что может вести к высокой нагрузке на CPU. Каждый AJAX запрос также загружает полный WordPress бэкэнд в обход всех форм кэширования. Как правило, вы не увидите этого в тестах скорости. Это особенно важно знать тем, кто использует дешевые виртуальные хостинги, поскольку у них нет большого пространства для маневров, когда дело касается CPU. Такая проблема всплывала с хостингом HostGator ранее.

Один из сценариев, с которым вы должны быть очень осторожны – автоматическое сохранение в WordPress и наличие открытых вкладок. К примеру, мы запустили новый проект на нашем сайте и оставили вкладку открытой. Heartbeat API по умолчанию опрашивает файл admin-ajax.php каждые 15 секунд, чтобы сделать автоматическое сохранение. Это видно по журналам доступа. Если бы мы оставили вкладку открытой на день, то один пост мог сгенерировать 5760 запросов за сутки.

Это слишком много запросов в бэкэнде для одного человека. Представьте, что будет, если у вас на сайте есть несколько редакторов. Эти запросы увеличатся в геометрической прогрессии. Мы сталкивались с таким во время нашего исследования DARTDrones, в котором мы помогали расширить их WooCommerce сайт для Shark Tank. У них было свыше 4100 вызовов admin-ajax.php за сутки, при этом посетителей было только 2000. Это не самое лучшее соотношение запросов к визитам. Наше исследование показало, что большинство запросов шло из консоли – они генерировались из-за того, что администраторы обновляли сайт, готовя его к показу.

Есть способ обнаружения некоторых проблем с обращениями к admin-ajax.php в бэкэнде, когда дело касается автосохранений, ревизий, блокировки записей и т.д. Для этого необходимо установить плагин Heartbeat Control .

Плагин Heartbeat Control в данный момент установлен на более 50 000 сайтов и имеет рейтинг 5 из 5. Прошло уже 2 года с момента его обновления, но он работает все так же, поскольку Heartbeat API тоже не обновлялся.

Плагин позволяет вам управлять частотой обращений к WordPress Heartbeat API с помощью пары щелчков мыши. Первая опция дает возможность управлять расположением heartbeat – к примеру, отключать его везде или разрешать только на страницах редактирования записей. Мы рекомендуем использовать последний вариант, поскольку полное отключение плагина может вести к тому, что некоторые плагины, зависящие от Heartbeat API, могут перестать работать.

Вторая опция позволяет вам задавать частоту опроса. Изменение с 15 сек до 60 сек позволит вам значительно сэкономить количество запросов и сохранить серверные ресурсы (снизив нагрузку на ЦП).

Вы можете также использовать премиум-плагин, такой как perfmatters , чтобы отключать heartbeat, менять частоту опросов, а также модифицировать интервал автосохранения.

Заключение

Как вы можете видеть, есть несколько быстрых и простых опций для диагностирования и устранения проблем с admin-ajax.php. Как правило, они появляются из-за сторонних плагинов, которые могут конфликтовать друг с другом или иметь плохую кодовую базу.

Сталкивались ли вы с такой проблемой на своем сайте? Если да, то поделитесь своими историями.

Не иссякнет поток полезных советов пользователям популярнейшей в мире бесплатной CMS. Именно потому, что популярна и потому, что у нее есть особенности, о которых важно помнить. Ранее мы говорили о том, как:

Сегодня мы немного расширим вторую тему и отключим очень ресурсоемкий и не всем нужный механизм WordPress под названием HeartBeat API .

HeartBeat API — функционал WordPress, который обеспечивает такие вещи, как:

  • Автосохранение;
  • Блокировка записи или страницы для других редакторов сайта, пока запись или страницу редактирует один человек;
  • Обновление информации о том, что пользователь всё ещё находится в административной части (консоли).

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

На деле это выражается в постоянных запросах с интервалом в 15-30 секунд (в зависимости от установленной версии) к одному конкретному файлу admin-ajax.php практически с любой страницы административной панели. Ситуация усугубляется, если вы предпочитаете держать открытыми сразу несколько вкладок консоли: запросы отправляются автономно из каждой вкладки. По сути, HeartBeat API является самым ресурсоёмким из всех стандартных механизмов WordPress .

Эту функцию мы сегодня и отключим. Отключить HeartBeat API для вашего сайта на WordPress рекомендуется, если:

  • В целом вашим сайтам на аккаунте хватает ресурсов, значительные превышения происходят только во время работы в консоли ;
  • Сайт редактируете только лично вы (то есть у сайта 1 редактор, а не несколько).

Внимание! Данное решение подойдет не всем сайтам. Это зависит от установленной на сайте темы, плагинов и индивидуальных настроек сайта. Вы можете опробовать его и, если оно окажется несовместимо с каким-либо из элементов сайта или отразится на важной для вас функции сайта, вы всегда можете включить HeartBeat API, вернув прежние настройки.

Как выключить HeartBeat API

Для этого необходимо внести изменения в файл functions.php внутри папки с текущей активной темой (шаблоном) сайта. Это можно сделать в файловом менеджере или через FTP.

Путь к файлу functions.php выглядит так: /путь_до_корня_сайта/wp-content/themes/имя_темы/functions.php.

Допишите в самом начале файла после тега

Add_action("init", "stop_heartbeat", 1); function stop_heartbeat() { wp_deregister_script("heartbeat"); }

Эти строчки отключают HeartBeat для всего сайта.

Плагин HeartBeat Control

Есть и менее радикальный вариант решения, чем полное отключение HeartBeat API. Оно обеспечивается специальным плагином HeartBeat Control . Установите его, активируйте и перейдите к настройкам («Инструменты» -> «HeartBeat Control»). В настройках вы можете выбрать следующие параметры:

1. Отключить ли HeartBeat для всего сайта или разрешить его использование только для отдельных его разделов, например, для страницы редактирования и публикации записей в административной панели.

2. Частота запросов к файлу admin-ajax.php. По умолчанию она может быть 15 секунд — измените это значение, например, до 60 секунд, и тем самым сократите расход ресурсов на данные запросы на целых 75% !

О чем важно помнить

  • Отключив HeartBeat API, мы отключили функцию автосохранения. Периодически сохраняйте редактируемые страницы и записи (по мере реальной необходимости).
  • Поскольку отключение HeartBeat API производится на уровне темы (шаблона) сайта, то, как только вы измените тему (шаблон) оформления, HeartBeat API снова будет работать. Процедуру отключения необходимо будет повторять для каждой новой темы, которую вы начинаете использовать на сайте.
  • То же самое касается и обновления текущей темы: после обновления процедуру отключения требуется повторить.

Желаем вам приятной работы!

В техническую поддержку сайт часто задают вопросы, связанные с работой скрипта admin-ajax.php на хостинге (часто его работа прерывается, заканчивается ошибкой или вызывает большую нагрузку на хостинг). Как решить все эти проблемы?

Что такое admin-ajax.php

Скрипт admin-ajax.php (так называемый WordPress heatbeat, включен с версии WordPress 3.5.2) выполняет продление пользовательской сессии WordPress - для удобства использования административной панели. Если администратор или редактор часто работает с сайтом, то это избавляет от необходимости каждый раз вводить логин/пароль. Но для 99% посетителей сайта этот функционал, скорее всего, не нужен: они ведь только читает контент, не редактируют его.

В ряде случаев admin-ajax.php может отвечать за повышенное потребление памяти и CPU на хостинге: за счет частых - каждые 15 секунд - обращений к базе данных на фоне других запросов (большинство из которых уже могут быть закэшированы). Поскольку функционал admin-ajax.php является динамическим (его нельзя кэшировать), то облако Айри, как и любой другой кэширующий инструмент, пропускает все запросы напрямую к серверу, создавая существенную нагрузку.

Как бороться с admin-ajax.php

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

Для отключения WordPress Heartbeat для всех страниц, кроме страницы создания новой записи, нужно добавить в header.php вашей темы:

add_action("init", "my_deregister_heartbeat", 1); function my_deregister_heartbeat() { global $pagenow; if ("post.php" != $pagenow && "post-new.php" != $pagenow) wp_deregister_script("heartbeat"); }

Для решения этой проблемы через плагины WordPress можно использовать