Утилита пропускной способности с использованием JavaScript - PullRequest
7 голосов
/ 28 декабря 2010

Есть ли какая-либо утилита для измерения пропускной способности от моего сервера до клиента или любого стандартного APIS. Нужно это для веб-приложения

Ответы [ 3 ]

16 голосов
/ 28 декабря 2010

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

Причина использования нескольких изображений заключается в том, что вы хотите начать с малого(скажем, 20k), но если соединение быстрое, это даст вам очень неточное число;исходя из того, насколько быстро загружается это изображение, вам нужно выбрать другое изображение соответствующего размера, чтобы попытаться получить лучшее представление о фактической пропускной способности (в отличие от задержки, устанавливающей соединение и т. п.)1006 * Вы можете сделать это просто с помощью простого JavaScript, добавив img теги вне страницы с уникальной строкой запроса для обхода кэширования;но поскольку вы пометили свой вопрос "jQuery", вам может оказаться более удобным использовать функцию .ajax (с ее настройкой cache: false).

Число скорости, которое выпридумать - это всего лишь указание, так как могут возникнуть другие вещи, которые могут испортить ваше время (потоковое видео на другой вкладке - или на другом компьютере, подключенном к тому же интернет-соединению, даже другие вещи, замедляющие выполнение вашего JavaScript, такие какJS-тяжелая анимация на странице), но она должна быть достаточно хороша, чтобы дать вам представление о том, с чем вы работаете.

1 голос
/ 15 октября 2015
    // Network connection - https://github.com/daniellmb/downlinkmax
var connectionSpeed = function() 
{
    // Deal with vendor prefixes
    var defaultSpeed = false,
        navigator = window.navigator,
        connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || null;
    if( ! connection )
        return defaultSpeed;

    // assume W3C Editor's Draft 09 October 2014
    if( 'downlinkMax' in connection )
    {
        var downlinkMax = connection.downlinkMax;
        if( ! downlinkMax )
            return defaultSpeed;
        if( ! isFinite(downlinkMax) )
            return defaultSpeed;
        return downlinkMax;
    }
    // assume W3C Working Draft 29 November 2012
    if( 'bandwidth' in connection )
    {
        var bandwidth = connection.bandwidth;
        if( ! bandwidth )
            return defaultSpeed;
        if( isNaN(speed) )
            return defaultSpeed;
        // standardize connection.bandwidth value by converting megabytes per second (MB/s) to megabits per second (Mbit/s)
        return bandwidth * 8;
    }
    // assume W3C Working Draft 07 June 2011
    switch( connection.type )
    {
        // convert connection.type value to approximate downlink values
        // speed estimate is based on the median downlink value for common devices in megabits per second (Mbit/s)
        case 'none':
            return 0;
        case '2g':
            return 0.134;
        case 'bluetooth':
        case 'cellular':
            return 2;
        case '3g':
            return 8.95;
        case '4g':
            return 100;
        case 'ethernet':
            return 550;
        case 'wifi':
            return 600;            
    }
    return defaultSpeed;
};
0 голосов
/ 10 июля 2015

Мне нужно что-то подобное, поэтому я написал https://github.com/beradrian/jsbandwidth, переписать https://code.google.com/p/jsbandwidth/.

Идея состоит в том, чтобы сделать два вызова через Ajax, один для загрузки, а другой для загрузки через POST.

Должен работать как с jQuery.ajax, так и с Angular $http.

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