测量服务器响应时间(客户端)

Kra*_*ken 6 javascript jquery client-side httpresponse response-time

我想实现一个脚本,它将使用常规浏览器从客户端测量我的服务器(=远程url)的响应时间,而不需要任何额外的插件(Java等).

我只关注网络速度(响应时间),而不是页面加载速度.

你会建议我测量什么?它必须在tcp/ip上运行,而不是像ICMP(ping)那样.

您如何绕过客户端的实施?我更喜欢使用JavaScript(JQuery).


更新:由于我需要跨域检查,ajax调用似乎不是一个选项

此外,ajax方法似乎根本不精确.与来自FireBug的信息相比,测试机器上的结果似乎有大约50ms的开销(它几乎是一个恒定值,无论域是什么 - 我猜它是介于两者之间的处理时间)

Rob*_*cke 7

您只需要为请求计时:

var sendDate = (new Date()).getTime();

$.ajax({
    //type: "GET", //with response body
    type: "HEAD", //only headers
    url: "/someurl.htm",
    success: function(){

        var receiveDate = (new Date()).getTime();

        var responseTimeMs = receiveDate - sendDate;

    }
});
Run Code Online (Sandbox Code Playgroud)


Ame*_*aut 2

创建一个始终在 mysite.net/speedtest 等 url 处返回空的 200 OK 响应的资源。然后是这样的:

var startTime = (new Date()).getTime(),
    endTime;

$.ajax({
    type:'GET',
    url: 'http://mysite.net/speedtest',
    async: false,
    success : function() {
        endTime = (new Date()).getTime();
    }
});

alert('Took ' + (endTime - startTime) + 'ms');
Run Code Online (Sandbox Code Playgroud)

这将为您提供向服务器发送请求所需的时间,以及服务器加载响应请求所需的最少资源集所需的时间。

新:您的问题现在与您添加的附加信息不一致。您想要让客户端 ping 到您无法控制的 URL - 这与您最初要求的完全不同,即从服务器获取响应时间。如果您尝试让客户端对您的服务器执行 ping 操作,则 ajax 调用即可解决问题。如果你试图让他们 ping 到其他服务器,那么我对你的目标是什么有点困惑。