javascript - JavaScript - 测量远程页面的加载时间
问题描述
我想在我的服务器上有一个非常简单的页面,它使用 JS 来测量在几个远程 URL/服务器上加载登录网页所需的时间。这些服务器位于世界各地,我想测量时间以便为我的位置选择最快的服务器(即代码当然会在客户端运行,在用户的浏览器上)。
例子:
server1.example.com:200 毫秒
server2.example.com:400 毫秒
server3.example.com:2 毫秒
有很多软件可以实现这个总体思路(从简单的 ping 到 wget 等),但我正在寻找可以在简单页面中使用的 JS 代码,该页面将尝试这些请求并显示时间。
到目前为止,我尝试的基本方法(使用 jQuery 的简单 Ajax 请求)由于 CORS 错误而不起作用。任何关于最简单解决方案的想法都会很棒。
解决方案
您可以不受任何限制地加载图像,因此请充分利用它们:
function ping(url) {
var img = new Image(),
start = Date.now();
img.onload = function () {
console.log(url, 'loaded in', Date.now() - start, 'ms');
};
img.src = url + '?' + Math.random();
document.body.appendChild(img);
}
ping('https://facebook.com/favicon.ico');
ping('https://www.bing.com/favicon.ico');
ping('https://youtube.com/favicon.ico');
顺便说一句,为了获得准确的结果,请确保图像大小相同。
推荐阅读
- html - 在 DIV 中居中两个 SVG
- amazon-web-services - 如何在 AWS 应用程序负载均衡器访问日志和云端访问日志中指定查询参数值
- ruby-on-rails-5 - 达到油门极限。稍后重试
- database - 如何将测试数据存储到 nosql 文档数据库中以便快速读取?
- google-maps - 如何使用量角器从自动填充的谷歌地图下拉列表中进行选择?
- sql - 要插入的存储过程不起作用:将数据类型 nvarchar 转换为数字时出错
- python-3.x - Google Cloud Speech 错误 - IndexError:列表索引超出范围
- jenkins - Jenkins Pipeline、下游作业和代理标签
- c++ - 错误:“_mm512_loadu_epi64”未在此范围内声明
- angular - 为什么安装版本 7 后 Angular CLI 版本显示为 1?