दिलचस्प पोस्ट
पायथन में चर नाम के रूप में अंडरस्कोर _ MySQL इन बयान के लिए पीडीओ बंधन मूल्य क्या एमएस एसक्यूएल सर्वर का "बीच" सीमा सीमाएं शामिल हैं? कैसे Xcode में आईओएस क्षुधा को iPhone 5 बड़े स्क्रीन समर्थन जोड़ने के लिए? INNER JOIN, LEFT JOIN, सही जुड़ने और पूर्ण जुड़ने के बीच क्या अंतर है? एक HTTP प्राप्त करें के साथ एक अर्रे भेजें यह पता लगाया जा रहा है कि ब्राउज़र के पास कोई माउस नहीं है और केवल स्पर्श है सी ++ यूनिट परीक्षण चौखटे की तुलना किसी भी गैर-शब्द के चरित्र से मेल करें (डाइक्रिटिक्स को छोड़कर) सी / सी ++ में सामान्य वितरण के बाद यादृच्छिक संख्या उत्पन्न करें Window.location = और window.location.replace () में अंतर क्या है? "WHERE column =?" पर MySQL में प्रश्न चिह्न का महत्व क्या है? क्या @ एचटीएमएल है। डिसप्लेफॉर सिंटैक्स के लिए? जावास्क्रिप्ट के दिनांक के निर्माता में महीना तर्क 0 से 11 तक क्यों है? एक उपनिर्देशिका से एक फ़ाइल आयात करें?

कैसे जावास्क्रिप्ट में इंटरनेट की गति का पता लगाने के लिए?

मैं जावास्क्रिप्ट पृष्ठ कैसे बना सकता हूं जो उपयोगकर्ता की इंटरनेट गति का पता लगाएगा और उसे पृष्ठ पर प्रदर्शित करेगा? आपके इंटरनेट गति की तरह कुछ है ?? Kb / s।

वेब के समाधान से एकत्रित समाधान "कैसे जावास्क्रिप्ट में इंटरनेट की गति का पता लगाने के लिए?"

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

उदाहरण यहां पा सकते हैं: जावास्क्रिप्ट का उपयोग करके गति की गणना करें

टेस्ट का मामला जिस पर सुझाव दिया गया है उसे लागू करते हैं:

 //JUST AN EXAMPLE, PLEASE USE YOUR OWN PICTURE! var imageAddr = "http://img.hiwab.com/javascript/31120037-5mb.jpg"; var downloadSize = 4995374; //bytes function ShowProgressMessage(msg) { if (console) { if (typeof msg == "string") { console.log(msg); } else { for (var i = 0; i < msg.length; i++) { console.log(msg[i]); } } } var oProgress = document.getElementById("progress"); if (oProgress) { var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />"); oProgress.innerHTML = actualHTML; } } function InitiateSpeedDetection() { ShowProgressMessage("Loading the image, please wait..."); window.setTimeout(MeasureConnectionSpeed, 1); }; if (window.addEventListener) { window.addEventListener('load', InitiateSpeedDetection, false); } else if (window.attachEvent) { window.attachEvent('onload', InitiateSpeedDetection); } function MeasureConnectionSpeed() { var startTime, endTime; var download = new Image(); download.onload = function () { endTime = (new Date()).getTime(); showResults(); } download.onerror = function (err, msg) { ShowProgressMessage("Invalid image, or error downloading"); } startTime = (new Date()).getTime(); var cacheBuster = "?nnn=" + startTime; download.src = imageAddr + cacheBuster; function showResults() { var duration = (endTime - startTime) / 1000; var bitsLoaded = downloadSize * 8; var speedBps = (bitsLoaded / duration).toFixed(2); var speedKbps = (speedBps / 1024).toFixed(2); var speedMbps = (speedKbps / 1024).toFixed(2); ShowProgressMessage([ "Your connection speed is:", speedBps + " bps", speedKbps + " kbps", speedMbps + " Mbps" ]); } } 
 <h1 id="progress">JavaScript is turned off, or your browser is realllllly slow</h1> 

जैसा कि मैंने इस अन्य उत्तर में स्टैक ओवरफ्लो पर वर्णित किया है , आप इसे विभिन्न आकारों की फाइलों के डाउनलोड के समय (छोटे से शुरू कर सकते हैं, कनेक्शन को अनुमति देने के लिए रैंप करते समय), कैश हेडर द्वारा सुनिश्चित करने और फ़ाइल वास्तव में रिमोट सर्वर से पढ़ा जा रहा है और कैश से पुनर्प्राप्त नहीं किया जा रहा है। यह जरुरी नहीं जरूरी है कि आपके पास अपना स्वयं का एक सर्वर है (फ़ाइलें एस 3 या समान से आ रही हैं), लेकिन आपको कनेक्शन की गति का परीक्षण करने के लिए फ़ाइलों को प्राप्त करने के लिए कहीं आवश्यकता होगी।

उस ने कहा, बिल्ट-इन-टाइम बैंडविड्थ टेस्ट कुख्यात अविश्वसनीय हैं, क्योंकि अन्य खिड़कियों में डाउनलोड किए जाने वाले अन्य मदों, आपके सर्वर की गति, रूट इत्यादि में लिंक्स, इत्यादि आदि से प्रभावित होते हैं। लेकिन आप किसी न किसी विचार को प्राप्त कर सकते हैं तकनीक के इस तरह का उपयोग कर

मुझे यह निर्धारित करने के लिए एक त्वरित तरीका की आवश्यकता है कि उपयोगकर्ता कनेक्शन की गति किसी साइट पर कुछ विशेषताओं को सक्षम / अक्षम करने के लिए तेज़ थी, मैंने यह छोटी सी स्क्रिप्ट बनाई है, जो एक एकल (छोटी) छवि को डाउनलोड करने में लगने वाले समय की औसत होती है कई बार, यह मेरे परीक्षणों में बहुत सटीक काम कर रहा है, उदाहरण के लिए, 3 जी या वाई-फाई के बीच स्पष्ट रूप से अंतर करने में सक्षम होने के कारण, शायद कोई और अधिक सुरुचिपूर्ण संस्करण या यहां तक ​​कि jQuery प्लगिन भी बना सकता है।

 var arrTimes = []; var i = 0; // start var timesToTest = 5; var tThreshold = 150; //ms var testImage = "http://img.hiwab.com/javascript/px.gif"; // small image in your server var dummyImage = new Image(); var isConnectedFast = false; testLatency(function(avg){ isConnectedFast = (avg <= tThreshold); /** output */ document.body.appendChild( document.createTextNode("Time: " + (avg.toFixed(2)) + "ms - isConnectedFast? " + isConnectedFast) ); }); /** test and average time took to download image from server, called recursively timesToTest times */ function testLatency(cb) { var tStart = new Date().getTime(); if (i<timesToTest-1) { dummyImage.src = testImage + '?t=' + tStart; dummyImage.onload = function() { var tEnd = new Date().getTime(); var tTimeTook = tEnd-tStart; arrTimes[i] = tTimeTook; testLatency(cb); i++; }; } else { /** calculate average of array items then callback */ var sum = arrTimes.reduce(function(a, b) { return a + b; }); var avg = sum / arrTimes.length; cb(avg); } } 

गति का परीक्षण करने के लिए छवियों का उपयोग करना बेहतर है लेकिन अगर आपको ज़िप फाइल से निपटना होगा, तो नीचे दिए गए कोड काम करेगा।

 var fileURL = "your/url/here/testfile.zip"; var request = new XMLHttpRequest(); var avoidCache = "?avoidcache=" + (new Date()).getTime();; request.open('GET', fileURL + avoidCache, true); request.responseType = "application/zip"; var startTime = (new Date()).getTime(); var endTime = startTime; request.onreadystatechange = function () { if (request.readyState == 2) { //ready state 2 is when the request is sent startTime = (new Date().getTime()); } if (request.readyState == 4) { endTime = (new Date()).getTime(); var downloadSize = request.responseText.length; var time = (endTime - startTime) / 1000; var sizeInBits = downloadSize * 8; var speed = ((sizeInBits / time) / (1024 * 1024)).toFixed(2); console.log(downloadSize, time, speed); } } request.send(); 

यह फाइल <10 एमबी के साथ बहुत अच्छी तरह से काम नहीं करेगा आपको एकाधिक डाउनलोड प्रयासों पर एकत्रित परिणाम चलाने होंगे।

छवि चाल शांत है लेकिन मेरे परीक्षणों में यह कुछ AJAX कॉल से पहले लोड हो रहा था, जिसे मैं पूरा करना चाहता था।

2017 में उचित समाधान एक कार्यकर्ता ( http://caniuse.com/#feat=webworkers ) का उपयोग करना है

कार्यकर्ता ऐसा दिखेगा:

 /** * This function performs a synchronous request * and returns an object contain informations about the download * time and size */ function measure(filename) { var xhr = new XMLHttpRequest(); var measure = {}; xhr.open("GET", filename + '?' + (new Date()).getTime(), false); measure.start = (new Date()).getTime(); xhr.send(null); measure.end = (new Date()).getTime(); measure.len = parseInt(xhr.getResponseHeader('Content-Length') || 0); measure.delta = measure.end - measure.start; return measure; } /** * Requires that we pass a base url to the worker * The worker will measure the download time needed to get * a ~0KB and a 100KB. * It will return a string that serializes this informations as * pipe separated values */ onmessage = function(e) { measure0 = measure(e.data.base_url + '/test/0.bz2'); measure100 = measure(e.data.base_url + '/test/100K.bz2'); postMessage( measure0.delta + '|' + measure0.len + '|' + measure100.delta + '|' + measure100.len ); }; 

जेएस फ़ाइल जो कार्यकर्ता को आमंत्रित करेगी:

 var base_url = PORTAL_URL + '/++plone++experimental.bwtools'; if (typeof(Worker) === 'undefined') { return; // unsupported } w = new Worker(base_url + "/scripts/worker.js"); w.postMessage({ base_url: base_url }); w.onmessage = function(event) { if (event.data) { set_cookie(event.data); } }; 

एक प्लोन पैकेज से लिया गया कोड मैंने लिखा:

ठीक है, यह 2017 है ताकि आपके पास नेटवर्क सूचना एपीआई (यद्यपि अब तक के ब्राउज़रों में सीमित समर्थन के साथ) अनुमानित डाउनलिंक गति की कुछ जानकारी प्राप्त करने के लिए है:

 navigator.connection.downlink 

यह एमबीटी प्रति सेकंड में प्रभावी बैंडविड्थ अनुमान है ब्राउज़र हाल ही में सक्रिय कनेक्शनों में हाल ही में मनाया गया अनुप्रयोग परत थ्रुपुट से इस अनुमान को बनाता है। कहने की जरूरत नहीं है, इस दृष्टिकोण का सबसे बड़ा फायदा यह है कि आपको बैंडविड्थ / गति गणना के लिए कोई भी सामग्री डाउनलोड करने की आवश्यकता नहीं है।

आप इसे और कुछ अन्य संबंधित विशेषताओं को यहां देख सकते हैं

इसकी सीमित सहायता और ब्राउज़र में अलग-अलग कार्यान्वयन (नवम्बर 2017 तक) के कारण, इसे इस बारे में विस्तार से पढ़ने की सलाह दी जाएगी

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

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

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

आप पृष्ठ लोड समय निर्धारित कर सकते हैं किसी पृष्ठ को पूर्ण रूप से लोड करने के लिए समय निकालने के लिए निम्न स्क्रिप्ट का प्रयोग करके देखें:

 <html> <head> <script type="text/javascript"> var start = new Date().getTime(); function onLoad() { var now = new Date().getTime(); var latency = now - start; alert("page loading time: " + latency); } </script> </head> <body onload="onLoad()"> <!- Main page body goes from here. --> </body> </html> 

नेविगेशन टाइमिंग पर 3WC पृष्ठ देखें:
https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html