Розуміння стану журналу мережевих мереж Chrome "Затримано"


172

У мене такий хронологічний журнал:

мережевий журнал

Я нічого не розумію в цьому: у чому різниця між заповненими сірими смугами та прозорими сірими смугами.


2
Я бачу це багато за останні два тижні. У мене завантажується 125 елементів, коли я роблю зміну-оновлення в хромі. Час від часу 3-4 з цих файлів застряватимуть у стані "затримки". Усі файли - це .png файли. Єдине виправлення - закрити вкладку, знову відкрити іншу таблицю та знову відкрити інструменти розробки. Я працюю над цією базою коду більше року без цієї проблеми, і не було жодних змін, які, на мою думку, спричинили б таку поведінку у файлах png.
— Грег Гратер

Відповіді:


202

Google дає розбиття цих полів у розділі Оцінка продуктивності мережі документації щодо DevTools.

Витяг з часових ресурсів мережі ресурсів :

Заглухли / заблокували

Час, який запит витратив на очікування, перш ніж його можна було надіслати. Цей час враховує будь-який час, витрачений на переговори про проксі. Крім того, цей час буде включати, коли браузер чекає, коли вже встановлене з'єднання стане доступним для повторного використання, дотримуючись максимально шість TCP-з'єднань Chrome за правило початку.

(Якщо ви забудете, Chrome має посилання "Пояснення" у підказці наведення курсора та на панелі "Час".)

По суті, основна причина, яку ви побачите в цьому, полягає в тому, що Chrome одночасно завантажує лише 6 файлів на сервер, а інші запити будуть зупинені, поки не з'явиться слот для з'єднання.

Це не обов’язково щось, що потребує виправлення, але одним із способів уникнути затримки стану є розподіл файлів на декілька доменних імен та / або серверів, маючи на увазі CORS , якщо застосовний до ваших потреб, проте HTTP2, мабуть, кращий варіант йти вперед. Пакет ресурсів (наприклад, JS та CSS конкатенація) також може допомогти зменшити кількість зупинених з'єднань.


1
Чи існує обмеження на 6 файлів для локальних файлів? Я час від часу стикаюсь із затриманим станом, коли завантажую сторінку зfile:///C:/...
— Ілля Коган

@IlyaKogan Немає обмеження на 6 файлів під час завантаження з файлової системи, але, здається, є фаза "зупинення". Я думаю, що це означає час, який Chrome потребує для відкриття файлу у файловій системі, а фаза "Завантаження вмісту" представляє час, необхідний для завантаження вмісту в пам'ять.
— Олександр О'Мара

4
FYI: На хромірованому номері 42 час очікування в черзі не зараховується як розділ "Стол / Блокування", як зазначено в документах, але входить до загальної кількості. Щоб отримати час у черзі, віднімайте всі розділи від загальної кількості. Сподіваємось, вони оновлюють свої документи (або виправляють помилку).
— delrox

20
Але яка різниця між білою та сірою смугами?
— Кет

Заборона домену для досягнення більшої одночасності не рекомендується. Замість цього використовуйте HTTP2. Дивіться: youtube.com/watch?v=yURLTwZ3ehk
— Homer6

13

DevTools: [мережа] пояснює порожні рядки перед запитом

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


Наразі, якщо ми чекаємо, коли розетка стане доступною:

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

6

https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing

Це походить з офіційного сайту Chome-devtools і це допомагає. Ось я цитую:

  • Черга Якщо запит у черзі, він вказував, що:
    • Запит був відкладений механізмом візуалізації, оскільки він вважається нижчим пріоритетом, ніж критичні ресурси (наприклад, сценарії / стилі). Це часто трапляється із зображеннями.
    • Цей запит було призупинено, щоб чекати появи недоступного сокета TCP, який збирається звільнити.
    • Запит був затриманий, оскільки браузер дозволяє лише шість TCP-з'єднань за походженням на HTTP 1. Затрачений час на створення записів кеш-диска (як правило, дуже швидкий.)
  • Затримка / блокування часу, який запит витрачав на очікування, перш ніж його можна було надіслати. Він може чекати з будь-якої з причин, описаних для черги. Крім того, цей час включає будь-який час, витрачений на переговори про проксі.

1

У моєму випадку сторінка надсилає кілька запитів з різними параметрами, коли вона була відкрита. Тож більшість «затримуються». Після відправлених запитів негайно "затримується". Уникати зайвих запитів було б краще (лінуватися ...).


1

Оскільки багато людей приїжджають сюди, налагоджуючи свій повільний веб-сайт, я хотів би повідомити вас про мій випадок, який жодне з пояснень Google не допомогло вирішити. Мої величезні затримки (іноді 1 хв) були спричинені тим, що Apache, що працює на Windows, мав занадто мало робочих ниток для обробки з'єднань, тому вони ставали в чергу.

Це може стосуватися вас, якщо у журналі apache є така примітка:

Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

Ця проблема вирішена в Apache httpd.conf. Відмітка: Включіть conf / extra / httpd-mpm.conf

І відредагуйте httpd-mpm.conf

<IfModule mpm_winnt_module>
   ThreadLimit              2000
   ThreadsPerChild          2000
   MaxConnectionsPerChild   0
</IfModule>

Зауважте, що вам може не знадобитися 2000 ниток або може знадобитися більше. 2000 рік був нормальним для моєї справи.

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