Как уменьшить "Время для первого байта" на моем веб-сайте?

Веб-сайт: Стасера ​​в ТВ

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

Как я могу уменьшить Время для первого байта?

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 секунд, просто добавляя правильный индекс к правильным таблицам.

  1. Взгляните на свой 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)
    }
}
  1. Обратите внимание на сгенерированный 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. Если вы не принимаете правильную обратную связь, измените свой хост-сервер.