Подтвердить что ты не робот

Как сократить время ожидания сервера?

Я пытаюсь оптимизировать скорость своего сайта, и я использую отличный инструмент в pingdom.com. В настоящее время более 50% времени, затрачиваемого на загрузку страницы, - это "Ожидание", как показано на скриншоте ниже. Что я могу сделать, чтобы уменьшить это? Кроме того, насколько типична эта цифра? есть ли этапы? Спасибо!

high server wait time

EDIT: Хорошо. Позвольте мне пояснить несколько вещей. Нет сценариев на стороне сервера или вызовов базы данных. Просто HTML, CSS, JS и изображения. Я уже сделал некоторые вещи, такие как push js до конца тега body, чтобы получить параллельные загрузки. Я знаю, что main.html и templates.html добавляют к общему времени ожидания, делая синхронно после загрузки js.js, что не проблема. Я просто удивлен, сколько времени "ожидания" есть для каждого запроса. На это влияет влияние сервера? как быть на общем сервере, влияет ли это на время ожидания? Есть ли плохие плоды для устранения этих проблем?

enter image description here

4b9b3361

Ответ 1

Наиболее распространенной причиной этого в случае Apache является использование поиска с обратным DNS. Это означает, что сервер пытается выяснить, что такое имя вашего компьютера, каждый раз, когда вы делаете запрос. Это может занять несколько секунд, и это объясняет, почему у вас длительное время WAIT, а затем очень быстрая загрузка, потому что дело не в пропускной способности.

Очевидное решение для этого - отключить hostnamelookup в /etc/httpd/conf/httpd.conf

HostnameLookups Off

Однако... этого обычно недостаточно. Дело в том, что во многих случаях apache по-прежнему выполняет поиск в обратном направлении, даже когда вы отключили поиск имени узла, поэтому вам нужно внимательно изучить каждую строку конфигурации apache. В частности, одной из наиболее распространенных причин для этого является LOGS. По умолчанию во многих установках red hat-centos формат журнала содержит% h, который обозначает "имя хоста" и требует, чтобы apache выполнял обратный поиск. Вы можете увидеть это здесь:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

Вы должны изменить эти% h для% a, чтобы решить эту проблему.

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

TTFB напрямую зависит от "физического" расстояния между браузером и сервером. Прокси-сервер CDN - лучший способ сократить указанное расстояние. Это, в сочетании с возможностями собственного кэширования, поможет обеспечить более быстрый ответ, загрузив кешированный объект из ближайшего местоположения POP (точки размещения).

Эффект будет зависеть от географического местоположения пользователя и распространения CDN. Тем не менее, вы можете ожидать значительного улучшения 50% -70% и более.

Говоря по опыту, я видел случаи, когда 90% контента было кэшировано и передавалось непосредственно из прокси-сервера, размещенного на другом континенте, с другой стороны земного шара.

Ответ 5

Это проблема с сервером... По словам Pingdom, "веб-браузер ожидает данных с сервера" - это то, что определяет время ожидания.

Вы не можете сделать это с конца javascript или кода, чтобы исправить это.