use*_*607 1 javascript dynamically-generated
我正在用 Javascript 编写上传速度测试。我正在使用 Jquery(和 Ajax)将数据块发送到服务器,以便计算获得响应所需的时间。理论上,这应该给出上传速度的估计。
当然,为了迎合用户的不同带宽,我会依次上传越来越多的垃圾数据,直到达到阈值持续时间。目前我使用以下函数生成垃圾数据,但是生成兆字节数据时速度非常慢。
function generate_random_data(size){
var chars = "abcdefghijklmnopqrstuvwxyz";
var random_data = "";
for (var i = 0; i < size; i++){
var random_num = Math.floor(Math.random() * char.length);
random_data = random_data + chars.substring(random_num,random_num+1);
}
return random_data;
}
Run Code Online (Sandbox Code Playgroud)
实际上,我所做的就是生成一大块字节以发送到服务器,但是,这是我在 Javascript 中找出方法的唯一方法。
任何帮助,将不胜感激。
更新:我重新编写了我的代码,使它只是一个 10 字节字符串的重复,而不是一个完全随机的字符串。
function generate_random_data(attempt){
var table = {
'1':10, //10kb
'2':12, //40kb
'3':14, //160kb
'4':16, //640kb
'5':18, //2.5Mb
'6':20 //10Mb
}
var random_data = "abcdefghij"; //10 bytes
for (i = 0; i < table[attempt]; i++){
random_data += random_data;
}
return random_data;
Run Code Online (Sandbox Code Playgroud)
现在该函数接受尝试次数的参数(所以我的脚本第一次尝试上传它会上传最小的文件,然后是下一个最小的文件,如此等等)。然后它获取一个 10 字节的字符串,然后不断将其添加到自身,直到达到所需的长度。
这是最好的方法吗?有没有更好的办法?
小智 8
如果你想生成要上传的数据,并且不关心它是随机的,有一种方法可以使用Blob对象来做到这一点
// Size should be given in 'bytes'
function generate_random_data(size) {
return new Blob([new ArrayBuffer(size)], {type: 'application/octet-stream'});
};
Run Code Online (Sandbox Code Playgroud)
我最近用它来测试我的上传速度 http://httpbin.org/post
| 归档时间: |
|
| 查看次数: |
3876 次 |
| 最近记录: |