2010-12-28 22 views

risposta

16

Non so di qualsiasi utilità o API standard, no, ma è possibile fai questo avendo diverse immagini di varie dimensioni sul tuo sito web, e poi recuperandole evitando la cache e osservando quanto tempo ci vuole per caricarle. Queste informazioni, insieme con la dimensione dell'immagine, ti dà una un'indicazione della velocità tra i due punti finali.

Il motivo per cui si utilizzano più immagini è che si vorrà iniziare in piccolo (ad esempio, 20k), ma se la connessione è veloce, si otterrà un numero molto impreciso; Quindi, sulla base di quanto velocemente l'immagine caricata, ti consigliamo di selezionare un'altra immagine di importo adeguato per cercare di ottenere una migliore idea della larghezza di banda effettiva (in contrapposizione alla impostazione della connessione e quali latenza).

È possibile eseguire questa operazione con JavaScript semplice, aggiungendo i tag img off-page con una stringa di query univoca per aggirare il caching; ma come hai codificato tua domanda "jQuery", si possono trovare più conveniente usare the .ajax function (con il suo ambiente cache: false), invece.

Il numero di velocità che si arriva con è solo un'indicazione, poiché le altre cose potrebbero essere in corso che rovinare il vostro tempo (streaming video in un'altra scheda   — o su un altro computer collegato alla stessa connessione Internet, anche altre cose rallentando l'esecuzione del tuo JavaScript, come un'animazione pesante di JS nella pagina), ma dovrebbe essere abbastanza buono da darti un'idea su cosa stai lavorando.

+0

Misurazione graduale di immagini di dimensioni diverse? Hmmm, interessante ... che dovrebbe rimuovere un po 'l'incertezza. – Piskvor

+0

@Piskvor: Sì. Voglio dire, sarà sempre un * indicazione * piuttosto che una cifra precisa, ma ... :-) –

+0

suggeriresti ancora lo stesso approccio ora, nel 2016 .. 6 anni dopo: D voglio avere un test di velocità in un sottodominio del mio sito Web, cosa suggeriresti ora. –

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