Итак, я прочитал несколько статей о том, что если у вас есть изображение известного размера, а затем сколько времени потребуется для загрузки этого изображения, вы можете определить скорость соединения / пропускную способность.
Я думаю, почему бы не использовать данные из window.performance.getEntries()
и взять общее transferSize
/ общее duration
, так как размер выборки был бы намного больше, и мне не пришлось бы использовать какой-либо из моих собственных временных параметров или ввести любые дополнительные произвольные изображения в качестве измерительного корма.
Вот что я сделал до сих пор, чтобы доказать это.
Сначала я получаю все записи с типом, размером и продолжительностью в табличном формате.
window.performance.getEntries().map(i => i.initiatorType + ' ' + i.transferSize + ' ' + i.duration );
Затем я копирую и вставляю его в блокнот ++, чтобы сделать небольшое регулярное выражение, чтобы очистить его перед тем, как поместить его в электронную таблицу.
^\d*:\s"(\w*\s\w*\s[\w\.]*)"
Отсюда я могу вставить в Excel.
Я отфильтровываю undefined
& navigation
initiatorType и 0
для обоих TransferSize & длительность .
И несколько вычисленных столбцов, чтобы все было в правильных единицах.
- Размер передачи в МБ
=(B3/1000000)
- продолжительность в секундах
=(C3/1000)
- Мбит / с
=(D3/E3)
Затем я создал сводную диаграмму.
Вопрос: моя математика верна? Какие недостатки в моей логике?
Мой план состоит в том, чтобы кодифицировать это, но сначала я хотел представить способ представить свою логику в удобной для понимания схеме перед тем, как продолжить.
Мотивация и источники:
Как определить скорость интернета в 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