Файл HAR - доступ к записям столбца «Размер» на вкладке «Сеть» Chrome Dev Tools? - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю над измерением процента запросов GET, обрабатываемых / возвращаемых работником службы сайта.В Chrome Dev Tools есть столбец «Размер», который показывает «(из ServiceWorker)» для файлов, сопоставленных с кешем.

enter image description here

Когда я щелкаю правой кнопкой мыши по любой строке и выбираю «Сохранить как HAR с содержимым», затем открываю загруженный файл в текстовом редакторе, ищатермин «работник службы» включает в себя некоторые результаты (где в ответе есть «statusText»: «Требуется откат работника службы»), но ни один из них не выглядит связанным с тем фактом, что работник службы обработал некоторые запросы.

Доступна ли эта информация, которую я ищу, где-либо в скачанном файле HAR?Кроме того, может ли это быть обнаружено другими способами, такими как захват сетевого трафика через Selenium Webdriver / ChromeDriver?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я попытался исследовать это немного в Chrome 70. Вот сводка.

Я отслеживаю все запросы на URL https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.min.js, который является критическим сценарием для моего сайта.

TL; DR

Как предполагает Кейси, в файле Chrome HAR нет явного способа определить, что запись была обработана работником службы (насколько яможно увидеть).Я также не смог найти комбинацию существующих полей записи HAR, которая бы положительно идентифицировала запись как обрабатываемую работником службы (но, возможно, такая комбинация существует).

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

Setup

Очистить кэш, куки и т. Д., Используя расширение Clear Cache.

Первая и вторая записи найдены в HAR

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

Вторая запись также присутствует в видерезультат начальной загрузки страницы - не было никакого другого обновления / перезагрузки - вы получаете 2 записи в HAR для того же URL-адреса при начальной загрузке страницы (если он проходит через работника службы и достигает сети).

Вторая запись (ниже) выглядит как запрос, сделанный работником сервиса в сеть.Мы видим заполненные поля serverIPAddress и response.connection.

Интересное наблюдение здесь состоит в том, что записи №2 startedDateTime и time попадают в 'startedDateTime и time поля'родительский запрос / запись.

Под этим я подразумеваю, что время начала и окончания записи № 2 полностью совпадает с временем начала и окончания записи № 1.Это имеет смысл, поскольку запись № 2 является своего рода «подзапросом» записи № 1.

Было бы хорошо, если бы в спецификации HAR был способ явно записать эту связь.Т.е. этот запрос-A со страницы привел к тому, что запрос-B был отправлен работником службы.Тогда такой инструмент, как HAR Viewer, не будет отображать две записи для того, что фактически является одним запросом (охватит ли это случай, когда одна выборка, выполненная страницей, приведет к нескольким выборкам работника службы?).эта запись # 1 записывает request.httpVersion и response.httpVersion как http/1.1, тогда как «реальный» запрос используется http/2.0.

Третья запись (от нажатия Enterв адресной строке после начальной загрузки страницы)

Эта запись появляется в HAR в результате нажатия клавиши ввода в адресной строке.Поле _fromCache, как и ожидалось, равно memory, поскольку ресурс в этом случае должен обслуживаться из обычного кэша браузера (ресурс использует cache-control=public, max-age=30672000).

Вопросы:

  • Была ли эта запись 'обработана' событием извлечения работника службы?
  • Может быть, когда ресурс находится в кеше памяти, событие службы fetch не было запущено?
  • Или работник службыфактически «прозрачный» здесь?

Нет ожидаемых полей serverIPAddress или connection, так как не было «реального» сетевого запроса.

Существует pageref поле присутствует, в отличие от записи № 2 (запись № 2 была сетевым запросом, инициированным работником службы).

четвертая запись

Подготовка к этомузапись была:

  • Добавить ресурс в кэш службы-работника (https://developer.mozilla.org/en-US/docs/Web/API/Cache).
  • Использовать расширение Clear Cache для очистки всех кешей (кроме кеш-службы).
  • Обновить страницу.

Для этой записи fromCache установлено disk. Я предполагаю, что это сталоause service-worker-cache смог удовлетворить запрос.

Не задано поле serverIPAddress или connection, но установлено pageref.

Пятая запись

Подготовительные работы для этой записи:

  • Используйте devtools для входа в автономный режим.

Эта запись в основном совпадает с записью # 4.

0 голосов
/ 25 сентября 2018

Похоже, что объект content определяет размер запросов: http://www.softwareishard.com/blog/har-12-spec/#content

Но я не вижу ничего в образце файла HAR от airhorner.com, который бы помог вам определить, что запроспришел от работника службы.Похоже на недостаток в спецификации HAR.

Похоже, Puppeteer предоставляет эту информацию.См. response.fromServiceWorker().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...