Performance 测量网络浏览器';s带宽
是否可以通过监视正常的http请求来衡量web浏览器的上载和/或下载速度?理想情况下,web应用程序能够告诉客户机的速度,而无需任何修改,也无需像JavaScript/Java/Flash这样的客户端脚本。因此,即使客户端使用Curl这样的库访问服务,它仍然可以工作。如果这是可能的,如何实现?如果不可能,为什么?这个方法有多精确Performance 测量网络浏览器';s带宽,performance,http,tcp,network-protocols,bandwidth,Performance,Http,Tcp,Network Protocols,Bandwidth,是否可以通过监视正常的http请求来衡量web浏览器的上载和/或下载速度?理想情况下,web应用程序能够告诉客户机的速度,而无需任何修改,也无需像JavaScript/Java/Flash这样的客户端脚本。因此,即使客户端使用Curl这样的库访问服务,它仍然可以工作。如果这是可能的,如何实现?如果不可能,为什么?这个方法有多精确 (如果它有助于假设PHP/Apache,但实际上这是一个独立于平台的问题。对我来说,能够测量上传速度更重要。)javascript或任何浏览器组件都不支持测量上传性能
(如果它有助于假设PHP/Apache,但实际上这是一个独立于平台的问题。对我来说,能够测量上传速度更重要。)javascript或任何浏览器组件都不支持测量上传性能 我能想到的唯一方法是,如果您正在上传到页面/http处理程序,并且页面正在接收传入的字节,那么它可以测量每秒接收的字节数。然后使用会话ID将其存储在某个应用程序范围的字典中 然后,您可以从浏览器定期轮询服务器,以使用会话ID获取字典中的值,并将其显示给用户。通过这种方式,您可以知道上传速度如何。您可以使用一个JavaScript库来测量您的上传和下载速度。你可以看到一个现场演示 由于没有,这是不可能的。请求很小,通常适合一个或两个数据包。您需要至少12个完整大小的数据包才能获得粗略的带宽估计,因为TCP首先必须扩展到可用带宽(“TCP慢速启动”),并且您需要平均抖动效应。如果你想要准确的话,你可能会说需要几百个数据包。这就是为什么上传速率测量脚本通常传输数兆字节的数据
OTOH,您可能能够从三方握手和ACK定时中估计往返延迟。但下载速度的影响至少和上传速度一样大。这在一般情况下是不可行的,因为入界和出界带宽通常是不对称的。不同的ISP在这方面有显著不同的比率,甚至在一天中的某个时间也会有所不同。Overview 您要求沿路径测量通常称为“无源”可用带宽(ABW)(相对于测量单个链路的ABW)。有许多不同的技术1使用被动观测或低带宽“主动”ABW探测技术来估计带宽。然而,生产服务中最常用的算法是主动ABW技术;他们观察来自两个不同端点的数据包流 我最熟悉的是,它从一端发送数据包,在另一端测量延迟的变化。单边被动路径ABW测量技术被认为更具实验性;AFAIK没有可靠的算法实现 讨论 您要求的任务的问题是,所有非侵入式ABW测量技术都依赖于计时。遗憾的是,在使用http时,计时是一件非常棘手的事情
- 您必须处理(例如,)和(它们过早地终止TCP会话,并且经常将web服务器的IP地址欺骗到客户端)的现实李>
- 您必须处理可能会间歇性地受到攻击的web主机
最后说明:
yaz
)仅限于udp它给了我错误的结果,由于speedtest.net,我的当前速度下降了:890 KB/s,上升了:564 KB/s,但AJAXOMeter显示,下降了:178 KB/s,上升了:134 KB/s