8
votes

Utilitaire de bande passante utilisant JavaScript

Y a-t-il des utiles utilitaires pour mesurer la bande passante de mon serveur au client ou à toute API standard.Need Ceci pour cette application Web


1 commentaires

Cela existe. Vérifiez ceci: SPEEDOF.ME/API.HTML


3 Réponses :


19
votes

Vous ne connaissez pas d'une API utilitaire ou standard, non, mais vous pouvez le faire en ayant plusieurs images de différentes tailles sur votre site Web, puis de les récupérer en contournant le cache et de regarder combien de temps cela prend pour leur charge. Cette information, ainsi que la taille de l'image, vous donne une indication de la vitesse entre les deux points d'extrémité.

La raison de l'utilisation de plusieurs images est que vous voudrez commencer petit (disons, 20k), mais si la connexion est rapide qui vous donnera un nombre très inexact; Ainsi en fonction de la rapidité avec laquelle cette image chargée, vous souhaiterez sélectionner une autre image d'une taille appropriée pour essayer d'obtenir une meilleure idée de la bande passante réelle (par opposition à la latence de la configuration de la connexion et telle).

Vous pouvez le faire juste avec JavaScript droit, en ajoutant des balises img hors page avec une chaîne de requête unique pour contourner la mise en cache; Mais comme vous avez suivi votre question "jQuery", vous trouverez peut-être plus pratique d'utiliser La fonction .ajax (avec son cache: FALSE paramètre) à la place.

Le nombre de vitesse que vous proposez n'est qu'une indication, car d'autres choses pourraient se passer de ce gâchis de votre chronométrage (en streaming vidéo dans un autre onglet - ou sur un autre ordinateur accroché à la même connexion Internet, même d'autres choses ralentissent. L'exécution de votre JavaScript, comme une animation JS-Heavy sur la page), mais elle devrait être suffisamment bonne pour vous donner une idée de ce que vous travaillez.


3 commentaires

Mesurer progressivement des images de taille différente? Hmmm, intéressant ... qui devrait supprimer un peu de l'incertitude.


@Piskvor: Ouais. Je veux dire, ça va toujours être une indication plutôt qu'une figure précise, mais ... :-)


Souhaitez-vous toujours suggérer la même approche de la même approche, en 2016. 6 ans plus tard: D Je souhaite avoir un speedtest dans un sous-domaine de mon site Web, que suggéreriez-vous maintenant?



0
votes

J'avais besoin de quelque chose de similaire, alors j'ai écrit https://github.com/beradrian/jsbandwidth , Une réécriture de https://code.google.com/p/jsbandwidth/ .

L'idée est de faire deux appels via Ajax, un à télécharger et l'autre pour télécharger via Post.

Il devrait fonctionner avec les deux jquery.ajax ou angulaire $ http .


0 commentaires

1
votes
    // 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;
};

3 commentaires

L'API Navigator n'est pas entièrement prise en charge dans tous les navigateurs


Oui. Cela ne fonctionne que dans Chrome. Pas dans IE ou Firefox.


Qu'en est-il de UpploadTest?