Оценка пропускной способности от PerformanceEntry API - PullRequest
0 голосов
/ 27 октября 2018

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

Я думаю, почему бы не использовать данные из window.performance.getEntries() и взять общее transferSize / общее duration, так как размер выборки был бы намного больше, и мне не пришлось бы использовать какой-либо из моих собственных временных параметров или ввести любые дополнительные произвольные изображения в качестве измерительного корма.

Вот что я сделал до сих пор, чтобы доказать это.

Сначала я получаю все записи с типом, размером и продолжительностью в табличном формате. window.performance.getEntries().map(i => i.initiatorType + ' ' + i.transferSize + ' ' + i.duration );

enter image description here

Затем я копирую и вставляю его в блокнот ++, чтобы сделать небольшое регулярное выражение, чтобы очистить его перед тем, как поместить его в электронную таблицу.

^\d*:\s"(\w*\s\w*\s[\w\.]*)" enter image description here

Отсюда я могу вставить в Excel.

Я отфильтровываю undefined & navigation initiatorType и 0 для обоих TransferSize & длительность . enter image description here

И несколько вычисленных столбцов, чтобы все было в правильных единицах.

  • Размер передачи в МБ =(B3/1000000)
  • продолжительность в секундах =(C3/1000)
  • Мбит / с =(D3/E3)

enter image description here

Затем я создал сводную диаграмму. enter image description here

Вопрос: моя математика верна? Какие недостатки в моей логике?

Мой план состоит в том, чтобы кодифицировать это, но сначала я хотел представить способ представить свою логику в удобной для понимания схеме перед тем, как продолжить.

Мотивация и источники:

Как определить скорость интернета в JavaScript? https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize https://developer.mozilla.org/en-US/docs/Web/API/PerformanceServerTiming https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry

1 Ответ

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

Хотя можно примерно оценить полосу пропускания таким образом, вы, вероятно, будете иметь большую неопределенность в этом измерении.

Вы используете большое количество небольших файлов, которые потенциально загружаются параллельно, поэтому вы можете измерять время передачи для файлов, разделяющих пропускную способность между ними.Меньшие файлы также имеют тенденцию давать ненадежные результаты по многим причинам.

Было бы лучше использовать большие файлы / файлы, такие как изображения, которые можно загружать, когда другой сетевой трафик не воспроизводится.Чем дольше измерение, тем лучше результаты - тем выше шанс попасть в точку, когда пользователь не использует свое соединение ни для чего другого.

Это не будет точным, но может дать вам некоторое представление о целях профилирования, если это так.для чего ты идешь.

...