首页 > 解决方案 > 从 PerformanceEntry API 估计带宽

问题描述

所以我现在已经阅读了几篇关于如果你有一个已知大小的图像然后你计算下载该图像需要多长时间的文章,你可以推断连接速度/带宽。

我的想法是,为什么不使用来自的数据window.performance.getEntries()并获取总数transferSize/总数duration,因为样本量会更大,而且我不必测量我自己的任何时间或注入任何额外的任意图像作为测量素材。

这是我到目前为止所做的只是为了证明这一点。

首先,我以表格形式获取所有具有类型、大小和持续时间的条目。 window.performance.getEntries().map(i => i.initiatorType + ' ' + i.transferSize + ' ' + i.duration );

在此处输入图像描述

然后我将其复制并粘贴到记事本++ 中,在将其填充到电子表格之前进行一些正则表达式来清理它。

^\d*:\s"(\w*\s\w*\s[\w\.]*)" 在此处输入图像描述

从这里我可以粘贴到 Excel 中。

我正在过滤undefined& navigation initiatorType0以及transferSize & duration在此处输入图像描述

还有一些计算列只是为了将所有内容放入正确的单位中。

在此处输入图像描述

然后我创建了一个数据透视图 在此处输入图像描述

问题:我的数学正确吗?我的逻辑有什么缺陷?

我的计划是对此进行编纂,但首先我想要一种在继续之前以易于遵循的布局呈现我的逻辑的方法。

动机和来源:

如何在 JavaScript 中检测互联网速度? https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize https://developer.mozilla.org/en-US/docs/Web/API/PerformanceServerTiming https://developer. mozilla.org/en-US/docs/Web/API/PerformanceEntry

标签: javascriptperformancebandwidth

解决方案


虽然可以通过这种方式粗略估计带宽,但您在这种测量中可能会有很大的不确定性。

您正在使用大量可能并行加载的小文件,因此您可能正在测量共享它们之间带宽的文件的传输时间。由于许多原因,较小的文件也往往会产生不可靠的结果。

最好使用可以在没有其他网络流量的情况下下载的大型文件/文件,例如可以下载的图像。测量的时间越长,结果就越好 - 当用户没有将他的连接用于其他任何事情时,更有可能击中某个位置。

这将不准确,但如果这就是您想要的,可能会给您一些用于分析目的的想法。


推荐阅读