2010-12-28 7 views

उत्तर

16

किसी भी उपयोगिता या मानक एपीआई, कोई का पता नहीं है के लिए किसी भी मानक APIS.Need यह करने के लिए अपने सर्वर से बैंडविड्थ को मापने के लिए किसी भी उपयोगिता है, लेकिन आप यह कर सकते हैं अपनी वेबसाइट पर विभिन्न आकारों की कई छवियां करके और फिर उन्हें कैश को छोड़कर और उन्हें लोड करने में कितना समय लगता है, इसे पुनर्प्राप्त कर लें। छवि के आकार के साथ, यह जानकारी आपको दो अंतराल के बीच की गति के संकेत प्रदान करती है।

एकाधिक छवियों का उपयोग करने का कारण यह है कि आप छोटे (कहना, 20k) शुरू करना चाहते हैं, लेकिन यदि कनेक्शन तेज़ है तो आपको एक बहुत ही गलत संख्या मिल जाएगी; इसलिए इस छवि को कितनी तेज़ी से लोड किया गया है, इस पर आधारित है कि आप वास्तविक बैंडविड्थ का बेहतर विचार प्राप्त करने के लिए उचित आकार की एक और छवि चुनना चाहते हैं (कनेक्शन की स्थापना की विलम्ब के विपरीत) और इस तरह।

आप इसे सीधे जावास्क्रिप्ट के साथ कर सकते हैं, img टैग ऑफ-पेज जोड़कर एक अद्वितीय क्वेरी स्ट्रिंग के साथ बाईपास कैशिंग; लेकिन जैसा कि आपने अपना प्रश्न "jQuery" टैग किया है, आपको इसके बजाय the .ajax function (इसके cache: false सेटिंग के साथ) का उपयोग करना अधिक सुविधाजनक हो सकता है।

गति नंबर पर आप के साथ आते हैं, केवल एक संकेत है के बाद से अन्य चीजें हैं जो गंदगी अपने समय (वीडियो अन्य टैब   — में या एक ही इंटरनेट कनेक्शन के लिए झुका किसी अन्य कंप्यूटर पर स्ट्रीमिंग, यहां तक ​​कि अन्य बातों पर जा रहा जा सकता है पृष्ठ पर जेएस-भारी एनीमेशन की तरह, अपनी जावास्क्रिप्ट के निष्पादन को धीमा करना), लेकिन यह आपको यह बताने के लिए पर्याप्त होना चाहिए कि आप किसके साथ काम कर रहे हैं।

+0

धीरे-धीरे विभिन्न आकार की छवियों को मापना? हम्म, दिलचस्प ... कि अनिश्चितता को थोड़ा सा हटा देना चाहिए। – Piskvor

+0

@Piskvor: हाँ। मेरा मतलब है, यह हमेशा सिर्फ एक सटीक आंकड़ा की तुलना में एक * संकेत होने के लिए * बजाय जा रहा है, लेकिन ... :-) –

+0

आप अभी भी एक ही दृष्टिकोण अब सुझाव है कि 2016 में .. 6 साल बाद: डी मैं एक speedtest करना चाहते हैं मेरी वेबसाइट के सबडोमेन में, अब आप क्या सुझाव देंगे। –

0

मुझे कुछ समान की आवश्यकता है, इसलिए मैंने https://github.com/beradrian/jsbandwidth लिखा, https://code.google.com/p/jsbandwidth/ का एक पुनर्लेखन।

विचार अजाक्स के माध्यम से दो कॉल करने के लिए है, एक डाउनलोड करने के लिए और दूसरा पोस्ट के माध्यम से अपलोड करने के लिए है।

यह दोनों jQuery.ajax या कोणीय $http साथ काम करना चाहिए।

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; 
}; 
संबंधित मुद्दे