【问题标题】:JS: XHR loads files (>50MB) immediatlyJS:XHR 立即加载文件 (>50MB)
【发布时间】:2022-01-16 12:04:13
【问题描述】:

我正在使用 Node.js 制作一个互联网速度测试应用程序。一切正常,期待下载测试。我通常以 8Mbits/s 的速度下载,但是当我尝试 XHR 在 /public/chunk/somefile.txt 请求文本文件/图像(约 256 MByte)时,它会在 1 秒内下载它,这是不可能的。然后我检查了onprogress日志:

为什么加载图片这么快?我的意思是它没有缓存或任何东西。无论如何,这是代码:

const fileUrl= "/public/chunk/d.jpg";

xhr = new XMLHttpRequest();
xhr.onprogress = (e) => console.log(e, e.loaded - e.total);
xhr.onloadend = () => { console.log("end")};
xhr.open("GET", fileUrl, true);
xhr.setRequestHeader('Cache-Control','no-cache');
xhr.send();

但是: 事情是这样的,如果我输入图片网址,例如:https://upload.wikimedia.org/wikipedia/commons/f/ff/Pizigani_1367_Chart_10MB.jpg。有用!为什么?

请告诉我为什么它不起作用,我已经尝试了 5 个小时。提前致谢。

【问题讨论】:

  • 测试时服务器应用程序是否在同一台机器上运行?如果是这样,您将能够以与在本地驱动器上复制文件类似的速度下载文件。
  • 是的。但我也在手机上试过了,结果还是一样。
  • 如果手机在同一个网络,50MB什么都不是。千兆 LAN 连接传输速度高达 125MB/s。 866MBit 的无线连接传输速度高达 108MB/s。也许this answer 对你有帮助。
  • 是的,但我最多下载。 1MB/秒。所以这是不可能的。此外,如果我输入维基百科网址,我会得到 0.9MB/s 的正常结果
  • 没关系,如果您从 LAN(局域网)内加载文件,则传输速率不限于您所在地区的 ISP(Internet 服务提供商)提供的访问速率WAN(广域网)。

标签: javascript node.js download xmlhttprequest


【解决方案1】:

如果您在本地计算机上运行 Web 服务器,则传输速率不限于您所在地区的 ISP 提供的用于访问 WAN 的速率。

如果您使用同一本地网络中的另一台设备对其进行测试,50MB 可能什么都不是,将在半秒或更短的时间内传输。

  • 千兆 LAN 连接可以传输高达 125MB/s 的速度
  • 866MBit 的无线连接传输速度高达 108MB/s

根据硬件和网络设置,您可以在几秒钟内传输较大的文件,这可能会在速度测试中给您带来意想不到的结果。您可以使用浏览器的开发工具或this answer 中提到的插件来限制客户端的下载速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2017-02-01
    相关资源
    最近更新 更多