Объяснение window.performance javascript
Я работаю над обнаружением скорости соединения, поэтому я планировал использовать объект window.performance для вычисления продолжительности.
Я немного запутался с объектом window.performance.timing, созданным на основе всей загрузки страницы или на основе последнего запроса и ответа.
Пример:
У меня есть 5 запросов сервера для загрузки веб-страницы, performance.timing
объект создается на основе всех 5 вызовов сервера или на основе 5-го вызова сервера (последний вызов).
расчет скорости подключения образца для справки
var bitsLoaded = 100000; //bits total size of all files (5 server call).
var duration = performance.timing.responseEnd - performance.timing.navigationStart;
var speedBps = Math.round(bitsLoaded / duration);
var speedKbps = (speedBps / 1024).toFixed(2);
var speedMbps = (speedKbps / 1024).toFixed(2);
Что-нибудь непонятное готово объяснить
Любая идея о window.performance
Ответы
Ответ 1
![performance.timing]()
Не уверен, что эта диаграмма дает вам лучшее представление об эффективности.
По вашему вопросу:
У меня есть 5 серверных вызовов для загрузки веб-страницы, performance.timing object генерируется на основе всех 5 серверных вызовов или на основе 5-го сервер (последний вызов).
Ответ: performance.timing
создается на основе всех запросов и ответов (но не включая ajax).
Для расчета скорости подключения образца script вы указали, я думаю, что ниже лучше.
var duration = performance.timing.responseEnd - performance.timing.responseStart;
Причина: длительность от navigationStart
до responseEnd
включает в себя синхронизацию DNS, которая не передает данные с сервера на клиентский.
Пожалуйста, обратитесь к https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html для определения таймингов.
Ответ 2
performance.timing НЕ основывается на последнем запросе и ответе. Он измеряет задержку между этапами navigationStart и loadEventStart в жизненном цикле страницы. Как объяснено здесь, основное его использование - определить скорость загрузки страницы.
По моему мнению. performance.timing действительно не может использоваться для измерения скорости соединения с момента его запуска После пользователь получил ответ и является объектом javascript, который выполняется в браузере. Я предлагаю вам просто пинговать пользователя и использовать время в оба конца.