BrowserHawk can measure your visitor's upload connection speed in bits per second via the UploadConnectionSpeed property. Likewise the UploadConnectionLatency property can measures the visitor's upload connection latency in milliseconds. Measuring the upload speed is less of an exact science than measuring download speed. However the results should provide a good estimate.
To perform the upload speed check, BrowserHawk generates completely random data in the visitor's browser and posts it (via a POST action) back to the web page that is performing the upload speed check (configurable). The size of the data posted is dynamically determined by BrowserHawk for each visitor, based on an initial, very quick test of their upload speed.
Tip: See the uploadspeed.aspx, uploadspeed.asp and uploadspeed.jsp samples included with BrowserHawk for a working example of measuring upload speed and latency.
Important considerations in testing upload speeds:
For proper operation of this test please ensure that your web server is configured to allow POST operations of data up to 2MB in size, or at least as large as the value specified in the UploadSpeedCheckMaxDatasize property, if you changed this from its default value. In some cases this may not be mandatory - the important thing is that the web server does not abort the post operation.
Detecting upload speeds is only supported with IE 8+ (and not in Compatibility Mode), Firefox 3.5+, Safari 4+, and Chrome 5+ browsers. All other browsers will return -2 for UploadConnectionSpeed and UploadConnectionLatency.
Detecting upload connection speed is new as of BrowserHawk 12. Although we have done extensive testing with measuring connection speeds and it has proven reliable, we do not have sufficient customer feedback at this time to determine the full extent of its accuracy. Therefore this property should be considered as somewhat experimental for now.
Detecting upload connection speed requires the Enterprise Edition of BrowserHawk.
Using the UploadConnectionSpeed or UploadConnectionLatency tests may result in increased charges from your hosting provider. More information on this is provided below.
Detecting upload speeds will not work with IIS versions 5 and earlier (if using IIS, requires IIS 6+).
The default settings that BrowserHawk uses are designed to balance the speed and efficiency of the test with good accuracy, and should be well suited for most purposes. However, there are several advanced configuration options available to increase the accuracy of the test even further (at the expense of longer testing times and higher bandwidth usage), or to decrease the testing time and bandwidth usage (at the expense of accuracy). These settings are provided by the following properties:
Using the UploadConnectionSpeed or UploadConnectionLatency tests will result in increased data transfer (upload) usage between your web server and your visitors. If the amount of data transfer your web site uses impacts your hosting charges, then using either of these tests may indeed result in higher charges from your hosting provider. Such charges may be significant. See the tips below for trying to reduce the bandwidth used if this is a concern. Note that this overhead is the same whether you are testing UploadConnectionSpeed, UploadConnectionLatency, or both. In other words there is no additional overhead by testing the latency if you are already testing the upload speed, and vice-versa.
Each time an upload speed check is performed, BrowserHawk dynamically determines an appropriate size of data to use in the speed measurement. This data size by default ranges from just a few KB up to 2MB. Users on faster, higher quality connections will typically be tested using data sizes toward the higher end, resulting in about 1-2MB of transfer for each test. Users with slower, lower quality connections will typically be tested using data sizes toward the lower end, resulting in 1MB or less of transfer for each test.
For busy sites, this amount of data transfer can add up quickly. For example, assume a busy site has 100,000 visitors per day. Further assume that 50% have high quality connections and average 1.5MB of transfer per test, and 50% have lower quality connections and average 750KB of transfer per test. Assuming each user has their speed tested once per day, this works out to 75GB and 38GB per day respectively, for a total of 114 GB per day, or 3.5 TB per month.
Such volumes of data transfer may add significantly to your web hosting bill. If you have any doubts be sure to check with your service provider to determine how an increase in data transfer may impact your bill. Please note that cyScape is not responsible for any such fees.
Tips for reducing bandwidth used by the upload speed and latency tests
You can try reducing the UploadSpeedCheckMaxDatasize (ActiveX / .NET) to 1000000 (1MB) (default is 2MB). This will cap the data transfer for each test at 1MB. Note however that this will likely result in a significant loss in accuracy of the test, particular for users on higher speed connections.
You can also try setting the UploadSpeedCheckTestSeconds (ActiveX / .NET) to 3 (default is 5) which should result in BrowserHawk using smaller data sample sizes for the test in order to perform the tests in the reduced, allotted time. This too may significantly affect the accuracy of the test.
You can use UploadSpeedCheckTargetURL (ActiveX / .NET) to change the target location where BrowserHawk posts the data sample for measurement purposes to another server that you own and operate on another network. If the provider of that service offers higher allowances and or better pricing for bandwidth usage (such as a CDN or a lower tier provider) compared to where your primary site is hosted this may be helpful. Note however that in doing this you will measure the speed between your visitor and this other network, not your primary network.
See Also:
UploadConnectionSpeed Property (ActiveX / .NET)
UploadConnectionLatency Property (ActiveX / .NET)
UploadSpeedCheckFirstDatasize Property (ActiveX / .NET)
UploadSpeedCheckMaxDatasize Property (ActiveX / .NET)
UploadSpeedCheckMaxWait Property (ActiveX / .NET)
UploadSpeedCheckTargetURL Property (ActiveX / .NET)