通过JavaScript实现在线测试HTTP延迟方法
我们在选购 VPS 时,有时候需要看一下网络质量如何,但是有的商家会禁止 ping,或者数据中心可能会很多,一 个个测试需要花费较多时间,因此考虑是否能够实现批量测试 HTTP 延迟。
HTTP/ICMP 延迟的区别
HTTP PING 延迟测试的原理是,先在客户端和服务端建立一个 TCP 连接,然后发出一个检测包测量响应时间。
由 于 TCP 层是位于 IP 层之上,且完成三次握手过程才能成功创建一个连接,因此保证了 HTTP PING 的可靠性和强 壮性。
ICMP PING 原理是用类型码为 0 的 ICMP 发请求,收到请求的主机则用类型码为 8 的 ICMP 回应,PING 程序来 计算间隔时间,以及多少个包被送达,用户就可以判断网络大致的情况。
由于 ICMP 基于 IP 协议,它不保证数据 被送达。
HTTP PING 和 ICMP PING 主要区别,是 HTTP PING 在测量前要建立一个 TCP 连接,因此,如果是用于建站、 数据存储等等基于 HTTP 传输数据的用途,HTTP PING 延迟更能提现服务器网络性能。
onerror 事件 onerror 事件会在文档或图像加载过程中发生错误时被触发,因此我们可以利用这个时间差计算出 HTTP 延迟。
实现方法
简单举个例子:
HTML 代码:
<div>js测速
<p>线路一:<span>ss0</span></p>
<p>线路二:<span>ss1</span></p>
<p>线路三:<span>ss2</span></p>
</div>
JavaScript 代码:
<script> var ping = 1,urlList = ['https://www.vipiu.net','https://www.baidu.com','https://www.qq.com']; setInterval("ping++",100); newRequest(); function newRequest(){ for(var i=0;i<urlList.length;i++){ $("p").eq(i).find('span').html('测速中...'); $("p").eq(i).find('span').append('<img src="' + urlList[i] + '?' + Math.random() + '" width="1" height="1" style="display:none" onerror=autotest(' +i+ ') >'); //console.log(i); } } function autotest(i){ $("p").eq(i).find("span").text(ping*100+"ms"); } </script>
https://www.vipiu.net/archives/2019/10/26/4158.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-09-25 【JavaScript】数组随机排序 之 Fisher–Yates 洗牌算法
2018-09-25 【DIV+CSS】代码作业练习DIV+CSS太极阴阳图
2018-09-25 【CSS3】纯CSS代码实现模拟时钟,+js对时功能。
2018-09-25 Ajax jquery的库的简化版本
2018-09-25 【半原创】将js和css文件装入localStorage加速程序执行