Javascript: есть ли JS может проверить скорость сети? - PullRequest
3 голосов
/ 31 декабря 2010

Я собираюсь проверить скорость моего сайта, в первую очередь задержку веб-сервера.Подводя итог, чего я хочу достичь:

1) веб-страница с javascript, размещенная на моем сайте (http://myweb.com/test-speed.html)

2), я даю этот URL своим друзьям

3) Они неничего не нужно делать, им просто нужно получить доступ к этой веб-странице, тогда задержка распечатывается на веб-странице.

4) Если веб-страница также может сказать, в каком состоянии находится посетитель (используя базу данных диапазона IP-адресов), это будет плюсом.

Какие-нибудь существующие решения?Я могу изменить javascript для регистрации данных в базе данных, но я думаю, что суть здесь в том, как написать javascript, чтобы узнать задержку.

Ответы [ 4 ]

8 голосов
/ 31 декабря 2010

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

На практикеСледующее решение будет проверять продолжительность между отправкой запроса GET и временем, когда тело ответа было полностью получено (но до того, как что-либо будет обработано или найдены какие-либо связанные активы).Я использую инфраструктуру jQuery , чтобы несколько упростить процесс создания XHR, хотя вы можете свободно использовать альтернативную реализацию.

// prepare the XHR object
$.ajax({
    beforeSend: function(){
        // right before firing off the request, create a global object that includes the request send time
        window.startTime = new Date();
    },

    // send the request to the root URI of this host
    url: '/',

    success: function(){
        // once the request comes back, record the end time
        window.endTime = new Date();

        // take the difference, which will yield a number in milliseconds, and print it out
        document.write(window.endTime - window.startTime + " ms");
    }
});

Источник: http://jsfiddle.net/5h4GZ/

Просто добавьте это в тег <script> на странице, и все готово.Измените вызов document.write, чтобы поместить его в более заметное место.Кроме того, не стесняйтесь вставлять последующий вызов в веб-службу мониторинга, чтобы записать его в базу данных.

Существует множество учебных пособий по геолокации в Интернете, поэтому подойдет любой из них.Вы можете извлечь выгоду из API геолокации, но, скорее всего, у вас все получится, просто сделав это по IP-адресу, поскольку это на самом деле более важно для ваших нужд.Для этого существует множество онлайн-сервисов, которые дадут вам геолокацию на основе IP.Конечно, все это может быть сделано на стороне сервера, поэтому точная реализация будет зависеть от ваших технологий.

2 голосов
/ 31 декабря 2010
  1. var startTime = new Date;
  2. Используйте XHR для запроса тривиального ответа от вашего сервера.(jQuery или гораздо меньшая кросс-браузерная оболочка XHR.)
  3. var roundTripLatencyInMS = new Date-startTime; при успешном обратном вызове из вашего запроса XHR.

Google для геолокации для вашего второго вопроса, который не связанна этот вопрос или задайте отдельный вопрос.

2 голосов
/ 31 декабря 2010

Я думаю, что вы могли бы сделать базовый тест задержки с:

<script type="text/javascript">
var time1 = new Date();
</script>

<script type="text/javascript" src="latency.js"></script>

latency.js будет иметь:

var time2 = new Date();

Я считаю, что time2 - time1 должно быть грубым круговым обходомзадержка.Это время, необходимое для выполнения запроса latency.js GET и получения однострочного ответа.Это не точно, потому что мы включаем время, используемое для обработки пакета (-ов), передачи фактической строки (которая зависит от пропускной способности, а не задержки), а также разбора и выполнения JavaScript.

Однако задержка все равно должнаДоминировать.

Как уже отмечалось, 4. это стандартная геолокация IP. Это - простая рабочая демонстрация с использованием google.loader.ClientLocation.google.loader.ClientLocation.address.region должен быть штатом в США.

0 голосов
/ 06 октября 2013

Вот пример приложения javascript:

http://gfblip.appspot.com/

Исходный код здесь:

https://github.com/apenwarr/blip

...