Время загрузки Проблемы, связанные с admin-ajax.php (со ссылкой на результаты PINGDOM)
Я пытаюсь сократить время загрузки моего сайта. Он загружается очень медленно, и я попробовал пару решений.
- Использование gmetrix для решения таких проблем, как оптимизация изображений.
- Использование Pingdom, чтобы увидеть, в чем проблемы.
Как указано в ссылке ниже, статистика Pingdom. http://tools.pingdom.com/fpt/#!/cKIvOz/http://healthyeatingandliving.ca/
Я понятия не имею, что такое admin-ajax.php и почему такая высокая нагрузка. Также, если кто-нибудь знает, какая первая строка находится в столбце file / path.
Если есть что-то еще, я могу сделать, чтобы уменьшить время загрузки, так как сейчас это боль в попытках редактировать контент. Спасибо всем, кто смотрит на это.
5 ответов
Вы должны добавить этот код в functions.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');
}
Этот код отключит функцию admin-ajax.php и снизит нагрузку на процессор на 75%.
Я потратил несколько бессмысленных дней, пытаясь решить эту проблему, я даже использовал код deregister_heartbeat - безрезультатно. Я хотел бы поделиться решением, которое я разработал, чтобы Apache / MySQL не умирал, пока вы пытаетесь выяснить, что происходит.
В конце концов, после создания тестовой копии сайта на другом сервере и перехода к теме по умолчанию, я смог выяснить, что механизм расширения в дочерней теме выполняет вызовы Ajax, которые каким-то образом преодолевают незарегистрированное сердцебиение - мы Сейчас угробил движок и, вероятно, напишу дочернюю тему с нуля.
Чтобы выиграть мне время, пока я отслеживал оскорбительные вещи, мне нужен был способ удалить потоки с веб-сервера до того, как они займут все доступное пространство - и у нас есть большой веб-сервер - тем не менее он вызывал сбои сайтов через час после Apache запустить снова. Конечно, вы можете использовать жесткий перезапуск Apache (перезапуск apachectl или перезапуск apache службы на компьютере Debian) - но это убивает все соединения - и в среде с несколькими хостами это может испортить кого-то. Если вы работаете в системе *NIX, вы можете сделать следующее, для этого требуется w3m (или эквивалентный браузер в режиме braile, который может запускать дампы из CLI, такие как elinks, lynx или links)
#!/bin/bash
kill `w3m -dump http://<server address>/server-status | grep "admin-ajax.php"|awk '{print $2}'`
Убедитесь, что вы получили обратные пометки сразу после уничтожения и в конце сценария. В основном мы используем w3m, чтобы попасть на страницу состояния сервера (вам нужно включить это в вашей конфигурации Apache - сделать ее доступной только с локального IP-адреса, это отдает много) - мы передаем результаты через grep, только отточенный на процессы, которые имеют дело с admin-ajax.php - и затем мы передаем эти строки в awk, который в основном возвращает список связанных номеров PID в команду kill.
В результате потоки процессов в Apache умрут - но ненадолго появятся в любом списке состояния сервера в виде открытого слота без текущего процесса - последующие попадания на ваш сайт снова будут занимать эти потоки в обычном режиме
Мы помещаем все это в задачу cron, запускаемую каждые 5 минут или около того - эффект в том, что у нас появляются потоки, но они никогда не оставались достаточно долго, чтобы вызвать проблему.
Другой плагин или тема использует что-то вроде виджета корзины, который обновляется, когда вы добавляете в корзину и т. Д., Он использует admin-ajax и загружается на каждой странице, если вы деактивируете WooCommerce, тогда проблема исчезнет, но проблема зависит от WooCommerce.
Проблема со временем загрузки ajax заключается в том, что скрипты woocommerce работают даже тогда, когда на определенных страницах нет функций, необходимых для вашего магазина. Я бы рассмотрел то, что делали эти люди, и удалил сценарии с ваших обычных страниц (извините, сайт немного устарел, так что вы можете перепроверить и обновить переменные сценария постановки в очередь). Но чтобы понять суть, вы в основном удалили плагины, которые не нужны для страниц, которые не требуют функций woocommerce.
http://wordimpress.com/how-to-load-woocommerce-scripts-and-styles-only-in-shop/
или же
http://gregrickaby.com/remove-woocommerce-styles-and-scripts/
Вы также можете добавить некоторые условные теги, чтобы они не загружались на определенных страницах.