【发布时间】:2015-04-16 14:49:03
【问题描述】:
我正在尝试进行带宽测试,看起来最传统的方法基本上是在客户端和服务器之间来回传输一个或多个图像,看看上传和下载时间是多少.事实上,this answer 已经涵盖了获取下载时间的想法。
不过,在这一点上,我不太确定如何使流程双向进行,使用或不使用其他答案。即使添加了调试语句,我也没有找到图片的数据存储在另一个答案的代码中的位置。而且,如果我尝试从头开始,我在 Internet/Stack Overflow 上找到的很多关于来回发送图像的 API 信息几乎没有解释或详细说明,所以我无法使用它把两者放在一起。此外,我进行的一些有时涉及其他平台的实验似乎确实会限制带宽使用,并且会根据图像大小不正确地缩放延迟。
使用 JavaScript,您如何在客户端和服务器之间来回传输相同的图像,以便您可以准确地使用延迟和图像的大小来衡量带宽?您如何使用相同的图像,在没有限制和没有用户交互的情况下实现双向工作?
编辑
我可以尝试发布我尝试过的东西,但它很难有意义。其中很多是在 Flash 中。当我开始使用 JavaScript 时,我开始沿着这些思路进行一些实验:
$.get('http://ip address/test.php?filename=XXX&data=LONG STRING OF DATA REPRESTING THE DATA TO BE SAVED PROBABLY LESS THAN 2K IN SIZE AND ALSO YOU SHOULD ESCAPE OR ATLEAST URIENCODE IT', function(data) {
alert('here')
eval(data);
});
PHP 文件是:
<?php
echo "response=here";
?>
我将 PHP 文件用于 Flash 和 JavaScript。我还使用了带有 Flash 的 Adobe Media Server。但是在使用 Flash/PHP 时从 1MB 文件变为 32MB 文件,Flash 只会将延迟扩大 10 倍,远不及 32 倍。至少在与 AMS 配对时,它似乎也限制了带宽使用,甚至当它与 PHP 文件配对。
我正要转换 JavaScript 代码以将实际图像传递到 PHP 文件中......但我无法得到它。即使我做这样的事情:
for (var s in download) {
alert(s + ": " + download[s]);
}
download 是在 JavaScript 中下载图像的对象(请参阅代码的链接答案),我没有看到任何有用的东西。 download.children.length 为 0,以此类推。在没有进一步确认的情况下,我也不愿意相信结果不会像 Flash 实验那样限制带宽使用;也许必须使用一种或另一种 API 调用来传递图像才能使其真正正常工作?
本质上,我真的在寻找好的 API 信息。我看到的其他东西还不够详细,无法将这些点联系起来。
第二次编辑
我遇到的一个陷阱是使用 POST 下载图像。我在让 IIS 7 允许 POST 下载任意文件类型(即 jpgs)带有“不寻常”二进制字符 并且允许它们成为大小超过 2MB。
【问题讨论】:
-
该问题显示了如何测量下载速度。要测量上传速度,您可以使用 XMLHttpRequest 将文件上传到服务器。
-
请提供您的尝试
-
你可以用这个来测试js中的上传速度:jsfiddle.net/ThinkingStiff/z8KXd
标签: javascript bandwidth