Как уменьшить "Время для первого байта" на моем веб-сайте?
Веб-сайт: Стасера в ТВ
если вы перейдете на домашнюю страницу, вы увидите, что до загрузки страницы браузер ждет...
Как я могу уменьшить Время для первого байта?
![enter image description here]()
Ответы
Ответ 1
Никто не может дать вам подробный ответ, если вы не покажете код, ответственный за создание контента сайта, - потому что там, где есть задержка.
Однако, поскольку сайт использует php, вы, скорее всего, используете выходную буферизацию
Учитывая, что в этом случае следующий код даст TTFB (задержка сети +) 2s:
<?php ob_start(); ?>
<!doctype html>
<html>
<head>
<title>Slow to Load, Slow to finish</title>
</head>
<body>
<?php
sleep(2); // Simulate slow processing
echo "Body"
?>
</body>
</html>
В то время как это даст вам TTFB (латентность сети +) 0s:
<!doctype html>
<html>
<head>
<title>Fast to load, Slow to finish</title>
</head>
<body>
<?php ob_start(); ?>
<?php
sleep(2); // Simulate slow processing
echo "Body"
?>
</body>
</html>
Время загрузки всей страницы одинаково в обоих случаях - только там, где изменяется задержка. Если вы специально сосредоточены на сокращении TTFB (почему), это должно дать вам достаточно информации для дальнейшего изучения.
ВАЖНО: существует много изменений frontend, которые вы должны сделать перед тем, как сосредоточиться на TTFB.
Ответ 2
Задержка вызвана серверной стороной script, которая генерирует индексную страницу.
Быстрый взгляд на ваш сайт, я могу догадаться, что на сайте используется PHP. Таким образом, задержка вызвана тем, что содержится в вашем index.php script.
Хостинг, сеть, аппаратное обеспечение и HTTP-сервер (Apache), безусловно, НЕ являются причиной. Ваш график показывает, что статические файлы (.css,.js и т.д.) Поставляются довольно быстро.
Итак, для более подробной информации вы должны предоставить дополнительную информацию (медленное выполнение index.php может иметь много разных причин...).
Ответ 3
Я столкнулся с огромным TTFB (8-10 секунд) и отчаянно искал решение. После поиска и поиска без каких-либо успехов я решил более внимательно посмотреть на мои PHP-коды и индексы базы данных.
решение буферизации вывода немного уменьшает мой TTFB, но недостаточно. У меня снова появились жалобы пользователей.
Реальная проблема - время обработки сервера (запросы БД и петли PHP) и источник HTML, сгенерированный вами.
Теперь я предлагаю выполнить следующие действия:
- Взгляните на индексы базы данных. Убедитесь, что вы используете соответствующие индексы для всех данных, которые вы возвращаете. Используйте Explain, чтобы проверить, используется ли ваш индекс, какой из них используется и как он используется.
В моем случае я возвращаю массив объектов, и я проверил свои индексы для своей основной таблицы. Все выглядело нормально, но я забыл, что мои объекты включают другие более мелкие объекты из других таблиц. Эти таблицы не были должным образом проиндексированы. Отсюда мой огромный TTFB. Я просто перехожу от 8 секунд до 2 секунд, просто добавляя правильный индекс к правильным таблицам.
- Взгляните на свой PHP-код.
У вас может быть цикл в цикле, который может быть медленным для обработки. Вы должны использовать фреймворк PHP MVC. Твой выбор. Я не буду называть ничего.
Избегайте такого кода, даже если он работает. Я знаю, некоторые программисты PHP4 скажут, что это хорошо.:)
$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);
if($result) {
while($row = mysqli_fetch_assoc($result)) {
$query = "UPDATE other_table SET something_else = "'.$row['something'].'";
$result2 = mysqli_query($mysqli, $query)
}
}
- Обратите внимание на сгенерированный HTML-код.
Например, вы генерируете код Javascript через петли PHP. Логика в порядке. Время загрузки - нет. Скажем, вы возвращаете 100 строк в таблицу. Для каждой строки у вас есть только 5 возможных действий (изменение статуса, редактирование, удаление, дублирование, печать). Это означает, что 5 диалогов jQuery (HTML-divs, с элементами управления) и 5 скриптов JS умножаются на 100 строк = тысячи строк кода, которые должны быть написаны на этой странице.
Мой случай, более 32 000 строк в моем HTML-коде 4 МБ. Просто прошло от 2 секунд до менее 1 секунды после того, как я положил все эти диалоги на правильные JS-функции.
В заключение (если вы все еще читаете это:)) не ищите некоторые магические функции, чтобы уменьшить ваш TTFB. Поиск кода и базы данных.
PS: Некоторые другие вещи помогут увеличить скорость: кеширование и сжатие браузера, использование CDN, минимизация HTML, CSS и JS, отложить разбор JavaScript, объединить изображения в CSS спрайты и т.д.
Используйте Google Page speed и Google Audits для получения дополнительных рекомендаций по производительности.
Ответ 4
Ошибки в .htaccess также могут значительно увеличить TTFB.
Мне пришлось удалить некоторые старые строки кода, оставленные Wordfence, чтобы разрешить мой 8-12-секундный TTFB (теперь 500 мс).
Ответ 5
Я думаю, что это зависит от того, какие инструменты вы используете для измерения такого рода данных. Когда я использовал webpagetest.org - время до первого байта составляло 292 мс, что хорошо. Возможно, вам нужно повторно запустить чек?
Часть этого номера зависит от того, где вы находитесь по отношению к серверу - чем больше вы прыгаете, тем больше это число. Это также о серверном оборудовании и подключении - обычно это то, что вы не можете контролировать. Возможно, вам захочется заглянуть в другие хосты, но сначала я проведу еще несколько тестов - попросите своих друзей проверить ваш сайт на webpagetest.org(или аналогичном) и посмотреть, какие значения они получают.
Ответ 6
Вероятно, наиболее эффективным решением является использование CDN с собственными возможностями кэширования HTML (статические и динамические). TTFB полагается на вашу способность быстро обрабатывать HTML-код на исходном сервере, вы можете пропустить время обработки всего за счет обслуживания новой кешированной копии из CDN.
Недавно я написал сообщение об этом, в котором рассматриваются факторы задержки TTFB и среднее время загрузки различных ресурсов (на основе данных, собранных в сеансах 1B). Вы можете найти это полезным:
http://www.incapsula.com/the-incapsula-blog/item/809-using-cdn-to-improve-seo-and-ttfb
Ответ 7
вы можете использовать службы cloudflare и cdn для TTFB. Если вы не принимаете правильную обратную связь, измените свой хост-сервер.