Як зменшити час очікування (ttfb)


114

У мене є запит, який передбачає отримання списку користувачів із таблиці в упорядкованому порядку на основі того, в який час він був створений. У інструментах для розробників chrome я отримав таку часову діаграму.

час від хромування

Ви можете бачити, що TTFB (час до першого байти) зависокий.
Я не впевнений, що це через сорти SQL. Якщо це причина, то як я можу скоротити цей час?
Або це через TTFB. Я бачив блоги, де написано, що TTFB має бути менше (<1сек). Але для мене це показує> 1 сек. Це через мій запит чи щось інше?
Я не впевнений, як я можу скоротити цей час.
Я використовую кутовий. Чи слід використовувати кутовий для сортування таблиці замість сортування SQL? (багато публікацій кажуть, що це не повинно бути проблемою)
Те, що я хочу знати, - як зменшити рівень TTFB. Хлопці! Я насправді новачок у цьому. Це завдання, яке мені дали члени моєї команди. Я не впевнений, як можна скоротити час TTFB. Я бачив багато постів, але не зміг правильно зрозуміти. Що таке TTFB. Це час, який займає сервер?


8
Ваше запитання показує нерозуміння того, що тут відбувається. Час чекає на сервер, тому чи використовувати ви AngularJS чи якусь іншу рамку, не має значення. Якщо ви хочете вдосконалити код на стороні сервера, ви насправді повинні показати нам код.
dirkk

@govindpatel, якщо моя відповідь нижче вам допомогла або ви вважаєте, що вона відповідає на питання, будь ласка, позначте її як правильну відповідь;)
Даніель Т. Соброса

Для простого сортування таблиць (якщо припустити, що дані таблиці вже отримані, і ви просто вдаєтеся до даних за іншим властивістю), це буде набагато швидше зробити це на стороні клієнта, ніж надсилати ще один запит на відсортовані дані.
Річік СК

Відповіді:


116

TTFB - це не час першого байту тіла відповіді (тобто корисних даних, таких як: json, xml тощо), а швидше перший час байту відповіді, отриманої від сервера. Цей байт є початком заголовків відповідей.

Наприклад, якщо сервер надсилає заголовки перед важкою роботою (як важкий SQL), ви отримаєте дуже низький рівень TTFB, але це неправда.

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

Щоб зменшити TTFB, вам потрібно швидше виконати роботу на стороні сервера.


2
Для подальшої діагностики часу, що відбувається під час TTFB, ви можете використовувати методи синхронізації на стороні сервера (наприклад, таймери налаштування або журнал налагодження) для налагодження часу, витраченого на кожну логіку.
Раптор

1
Перегляньте цю статтю, вона детально пояснює проблему та дає поради щодо можливих рішень: websiteoptimization.com/speed/tweak/time-to-first-byte
LucaM

Остерігайтеся, як трактувати TTFB як найважливіший момент: blog.cloudflare.com/…
Оуен

Якщо ця відповідь допоможе вам @govindpatel, позначте це як правильну відповідь;)
Даніель Т. Соброса

16

Я зустрів ту саму проблему. Мій проект працює на локальному сервері. Я перевірив свій PHP-код.

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

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

127.0.0.1 localhost.


5
Дякую. Я змінився localhost(TTFB: 1s) на 127.0.0.1(TTFB: 12ms)
Містер Чорний

У моєму випадку ця відповідь теж допомогла: TTFB 2,39 s -> TTFB 110 мс. Чому хтось спротив це?
Мартін Пабст

Я думаю, що це також виправлено для мого додатка Spring-Boot, я використовую базу даних Postgres в Docker-Container, TTFB був до 10 с, зараз це лише близько 40 мс :)
Sepultura

Чому "localhost" займає так багато часу?
showdev

14

TTFB - це те, що відбувається за лаштунками. Ваш браузер нічого не знає про те, що відбувається за кадром.

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

Ця стаття може допомогти зрозуміти TTFB, але в іншому випадку потрібно заглибитись у свою програму.


4

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

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


Обов’язково ознайомтеся з розділом коментарів до цієї статті. Багато людей наводять вагомі причини, щоб потурбуватися про TTFB.
Зак Макомбер

4

Якщо ви використовуєте PHP, спробуйте скористатися <?php flush(); ?>після </head>та перед </body>або будь-яким розділом, який ви хочете швидко вивести (наприклад, заголовком чи вмістом). Він виведе фактично код, не чекаючи закінчення php. Не використовуйте цю функцію постійно, інакше збільшення швидкості не буде помітним.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.