Как уменьшить время ожидания (ttfb)

114

У меня есть запрос, который включает получение списка пользователей из таблицы в отсортированном порядке в зависимости от того, в какое время он был создан. Я получил следующую временную диаграмму из инструментов разработчика Chrome.

хронометраж из хрома

Вы можете видеть, что TTFB (время до первого байта) слишком велико.
Я не уверен, что это из-за сортировки SQL. Если это причина, то как я могу сократить это время?
Или это из-за TTFB. Я видел блоги, в которых говорится, что TTFB должен быть меньше (<1 сек). Но для меня это показывает> 1 сек. Это из-за моего запроса или чего-то еще?
Я не знаю, как мне сократить это время.
Я использую угловой. Должен ли я использовать angular для сортировки таблицы вместо сортировки SQL? (во многих сообщениях говорится, что это не должно быть проблемой)
Я хочу знать, как уменьшить TTFB. Ребята! Я новичок в этом. Это задача, которую мне поставили члены моей команды. Я не уверен, как уменьшить время TTFB. Я видел много постов, но не мог правильно понять. Что такое TTFB. Это время, затраченное сервером?

govindpatel
источник
8
Ваш вопрос показывает непонимание того, что здесь происходит. Это время ожидания сервера, поэтому не имеет значения, используете ли вы AngularJS или какой-либо другой фреймворк. Если вы хотите улучшить код на стороне сервера, вам действительно нужно показать нам код.
dirkk
@govindpatel, если мой ответ ниже помог вам или вы думаете, что он отвечает на вопрос, отметьте его как правильный ответ;)
Daniel T. Sobrosa
Для простой сортировки таблицы (при условии, что данные таблицы уже получены, и вы просто прибегаете к данным с помощью другого свойства) будет намного быстрее сделать это на стороне клиента, чем отправить другой запрос для отсортированных данных.
Richik SC

Ответы:

116

TTFB - это не время до первого байта тела ответа (т. Е. Полезных данных, таких как: json, xml и т. Д.), А время до первого байта ответа, полученного от сервера. Этот байт является началом заголовков ответа.

Например, если сервер отправляет заголовки перед выполнением тяжелой работы (например, тяжелого SQL), вы получите очень низкий TTFB, но это не «правда».

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

Чтобы уменьшить TTFB, вам нужно быстрее выполнять работу на стороне сервера.

Даниэль Т. Соброса
источник
2
Для дальнейшей диагностики времени, происходящего во время TTFB, вы можете использовать методы синхронизации на стороне сервера (например, таймеры установки или журнал отладки) для отладки времени, потраченного на каждую логику.
Raptor
Остерегайтесь рассматривать TTFB как самый важный момент: blog.cloudflare.com/…
Оуэн Блэкер
Если этот ответ вам поможет @govindpatel, отметьте его как правильный ответ, пожалуйста;)
Дэниел Т. Соброса
16

Я столкнулся с той же проблемой. Мой проект работает на локальном сервере. Я проверил свой php-код.

$db = mysqli_connect('localhost', 'root', 'root', 'smart');

Я использую localhostдля подключения к моей локальной базе данных. Возможно, это причина проблемы, которую вы описываете. Вы можете изменить свой HOSTSфайл. Добавьте строку

127.0.0.1 localhost.

CH Чау
источник
5
Спасибо. Я изменил localhost(TTFB: 1 с) на 127.0.0.1(TTFB: 12 ​​мс)
Мистер Блэк
В моем случае этот ответ тоже помог: TTFB 2,39 с -> TTFB 110 мс. Почему кто-то проголосовал против?
Мартин Пабст
Я думаю, что это также исправило это для моего приложения Spring-Boot, я использую базу данных Postgres в Docker-Container, TTFB был до 10 с, теперь всего около 40 мс :)
Sepultura
Почему "localhost" занимает так много времени?
showdev
14

TTFB - это то, что происходит за кулисами. Ваш браузер ничего не знает о том, что происходит за кулисами.

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

Эта статья может помочь понять TTFB, но в противном случае вам необходимо глубже изучить свое приложение.

Pureferret
источник
4

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

Хорошим аргументом в пользу этого является приведенный ими пример использования gzip для сжатия страницы. Несмотря на то, что ttfb работает быстрее, когда вы не сжимаете, общее впечатление от пользователя хуже, потому что для загрузки содержимого, которое не заархивировано, требуется больше времени.

Майк
источник
Обязательно ознакомьтесь с разделом комментариев к этой статье. Многие люди приводят веские причины для беспокойства по поводу TTFB.
Зак Макомбер,
4

Если вы используете PHP, попробуйте использовать <?php flush(); ?>после </head>и до </body>или любой другой раздел, который вы хотите быстро вывести (например, заголовок или контент). Он выведет реальный код, не дожидаясь завершения работы php. Не используйте эту функцию постоянно, иначе прирост скорости не будет заметным.

Больше информации

Матиас Писарро
источник