Added configuration for custom compensation factor; Fixed a problem where xhr_ignoreErrors could not be changed
This commit is contained in:
parent
23b188b3ce
commit
62a06fa7d3
3 changed files with 13 additions and 6 deletions
6
doc.md
6
doc.md
|
@ -1,7 +1,7 @@
|
||||||
# HTML5 Speedtest
|
# HTML5 Speedtest
|
||||||
|
|
||||||
> by Federico Dossena
|
> by Federico Dossena
|
||||||
> Version 4.2.3, June 14 2017
|
> Version 4.2.4, June 15 2017
|
||||||
> [https://github.com/adolfintel/speedtest/](https://github.com/adolfintel/speedtest/)
|
> [https://github.com/adolfintel/speedtest/](https://github.com/adolfintel/speedtest/)
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,6 +178,10 @@ Fetch API are used if the following conditions are met:
|
||||||
* allow_fetchAPI is true
|
* allow_fetchAPI is true
|
||||||
* Chromium-based browser with support for Fetch API and enable_quirks is true
|
* Chromium-based browser with support for Fetch API and enable_quirks is true
|
||||||
OR force_fetchAPI is true and the browser supports Fetch API
|
OR force_fetchAPI is true and the browser supports Fetch API
|
||||||
|
* __overheadCompensationFactor__: compensation for HTTP and network overhead. Default value assumes typical MTUs used over the Internet. You might want to change this if you're using this in your internal network with different MTUs, or if you're using IPv6 instead of IPv4.
|
||||||
|
* Default: `1.13359567567567567568` (1048576/925000) assumes HTTP+TCP+IPv4+ETH with typical MTUs used over the Internet
|
||||||
|
* `1460 / 1514`: TCP+IPv4+ETH, ignoring HTTP overhead (this measures the speed at which you actually download/upload files instead of estimating the speed of the connection)
|
||||||
|
* `1440 / 1514`: TCP+IPv6+ETH, ignoring HTTP overhead (this measures the speed at which you actually download/upload files instead of estimating the speed of the connection)
|
||||||
|
|
||||||
### Aborting the test prematurely
|
### Aborting the test prematurely
|
||||||
The test can be aborted at any time by sending an abort command to the worker:
|
The test can be aborted at any time by sending an abort command to the worker:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
HTML5 Speedtest v4.2.3
|
HTML5 Speedtest v4.2.4
|
||||||
by Federico Dossena
|
by Federico Dossena
|
||||||
https://github.com/adolfintel/speedtest/
|
https://github.com/adolfintel/speedtest/
|
||||||
GNU LGPLv3 License
|
GNU LGPLv3 License
|
||||||
|
@ -29,7 +29,8 @@ var settings = {
|
||||||
garbagePhp_chunkSize: 20, // size of chunks sent by garbage.php (can be different if enable_quirks is active)
|
garbagePhp_chunkSize: 20, // size of chunks sent by garbage.php (can be different if enable_quirks is active)
|
||||||
enable_quirks: true, // enable quirks for specific browsers. currently it overrides settings to optimize for specific browsers, unless they are already being overridden with the start command
|
enable_quirks: true, // enable quirks for specific browsers. currently it overrides settings to optimize for specific browsers, unless they are already being overridden with the start command
|
||||||
allow_fetchAPI: false, // enables Fetch API. currently disabled because it leaks memory like no tomorrow
|
allow_fetchAPI: false, // enables Fetch API. currently disabled because it leaks memory like no tomorrow
|
||||||
force_fetchAPI: false // when Fetch API is enabled, it will force usage on every browser that supports it
|
force_fetchAPI: false, // when Fetch API is enabled, it will force usage on every browser that supports it
|
||||||
|
overheadCompensationFactor: 1048576/925000 //compensation for HTTP+TCP+IP+ETH overhead. 925000 is how much data is actually carried over 1048576 (1mb) bytes downloaded/uploaded. This default value assumes HTTP+TCP+IPv4+ETH with typical MTUs over the Internet. You may want to change this if you're going through your local network with a different MTU or if you're going over IPv6 (see doc.md for some other values)
|
||||||
}
|
}
|
||||||
|
|
||||||
var xhr = null // array of currently active xhr requests
|
var xhr = null // array of currently active xhr requests
|
||||||
|
@ -95,9 +96,11 @@ this.addEventListener('message', function (e) {
|
||||||
if (typeof s.count_ping !== 'undefined') settings.count_ping = s.count_ping // number of pings for ping test
|
if (typeof s.count_ping !== 'undefined') settings.count_ping = s.count_ping // number of pings for ping test
|
||||||
if (typeof s.xhr_dlMultistream !== 'undefined') settings.xhr_dlMultistream = s.xhr_dlMultistream // number of download streams
|
if (typeof s.xhr_dlMultistream !== 'undefined') settings.xhr_dlMultistream = s.xhr_dlMultistream // number of download streams
|
||||||
if (typeof s.xhr_ulMultistream !== 'undefined') settings.xhr_ulMultistream = s.xhr_ulMultistream // number of upload streams
|
if (typeof s.xhr_ulMultistream !== 'undefined') settings.xhr_ulMultistream = s.xhr_ulMultistream // number of upload streams
|
||||||
|
if (typeof s.xhr_ignoreErrors !== 'undefined') settings.xhr_ignoreErrors = s.xhr_ignoreErrors // what to do in case of errors during the test
|
||||||
if (typeof s.xhr_dlUseBlob !== 'undefined') settings.xhr_dlUseBlob = s.xhr_dlUseBlob // use blob for download test
|
if (typeof s.xhr_dlUseBlob !== 'undefined') settings.xhr_dlUseBlob = s.xhr_dlUseBlob // use blob for download test
|
||||||
if (typeof s.garbagePhp_chunkSize !== 'undefined') settings.garbagePhp_chunkSize = s.garbagePhp_chunkSize // size of garbage.php chunks
|
if (typeof s.garbagePhp_chunkSize !== 'undefined') settings.garbagePhp_chunkSize = s.garbagePhp_chunkSize // size of garbage.php chunks
|
||||||
if (typeof s.force_fetchAPI !== 'undefined') settings.force_fetchAPI = s.force_fetchAPI // use fetch api on all browsers that support it if enabled
|
if (typeof s.force_fetchAPI !== 'undefined') settings.force_fetchAPI = s.force_fetchAPI // use fetch api on all browsers that support it if enabled
|
||||||
|
if (typeof s.overheadCompensationFactor !== 'undefined') settings.overheadCompensationFactor = s.overheadCompensationFactor //custom overhead compensation factor (default assumes HTTP+TCP+IP+ETH with typical MTUs)
|
||||||
if (settings.allow_fetchAPI && settings.force_fetchAPI && (!!self.fetch)) useFetchAPI = true
|
if (settings.allow_fetchAPI && settings.force_fetchAPI && (!!self.fetch)) useFetchAPI = true
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
// run the tests
|
// run the tests
|
||||||
|
@ -203,7 +206,7 @@ function dlTest (done) {
|
||||||
var t = new Date().getTime() - startT
|
var t = new Date().getTime() - startT
|
||||||
if (t < 200) return
|
if (t < 200) return
|
||||||
var speed = totLoaded / (t / 1000.0)
|
var speed = totLoaded / (t / 1000.0)
|
||||||
dlStatus = ((speed * 8) / 925000.0).toFixed(2) // 925000 instead of 1048576 to account for overhead
|
dlStatus = ((speed * 8 * settings.overheadCompensationFactor)/1048576).toFixed(2) // speed is multiplied by 8 to go from bytes to bits, overhead compensation is applied, then everything is divided by 1048576 to go to megabits/s
|
||||||
if ((t / 1000.0) > settings.time_dl || failed) { // test is over, stop streams and timer
|
if ((t / 1000.0) > settings.time_dl || failed) { // test is over, stop streams and timer
|
||||||
if (failed || isNaN(dlStatus)) dlStatus = 'Fail'
|
if (failed || isNaN(dlStatus)) dlStatus = 'Fail'
|
||||||
clearRequests()
|
clearRequests()
|
||||||
|
@ -297,7 +300,7 @@ function ulTest (done) {
|
||||||
var t = new Date().getTime() - startT
|
var t = new Date().getTime() - startT
|
||||||
if (t < 200) return
|
if (t < 200) return
|
||||||
var speed = totLoaded / (t / 1000.0)
|
var speed = totLoaded / (t / 1000.0)
|
||||||
ulStatus = ((speed * 8) / 925000.0).toFixed(2) // 925000 instead of 1048576 to account for overhead
|
ulStatus = ((speed * 8 * settings.overheadCompensationFactor)/1048576).toFixed(2) // speed is multiplied by 8 to go from bytes to bits, overhead compensation is applied, then everything is divided by 1048576 to go to megabits/s
|
||||||
if ((t / 1000.0) > settings.time_ul || failed) { // test is over, stop streams and timer
|
if ((t / 1000.0) > settings.time_ul || failed) { // test is over, stop streams and timer
|
||||||
if (failed || isNaN(ulStatus)) ulStatus = 'Fail'
|
if (failed || isNaN(ulStatus)) ulStatus = 'Fail'
|
||||||
clearRequests()
|
clearRequests()
|
||||||
|
|
2
speedtest_worker.min.js
vendored
2
speedtest_worker.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue