Javascript 如何在浏览器中确定和记录远程服务器的延迟

Javascript 如何在浏览器中确定和记录远程服务器的延迟,javascript,analytics,http-status-codes,data-collection,Javascript,Analytics,Http Status Codes,Data Collection,与相关: 我试图了解收集外部服务器http响应状态代码的可行性 上下文: 我正在将一个javascript库加载到页面中,该页面用于捕获DOM元素值,然后将GET请求组装到外部服务器,以将这些值传递给集合。Google Analytics就是一个很好的例子,ga.js库从页面/浏览器中查找数据值,并使用大量查询字符串名称/值对和/或cookie值向外部服务器上的跟踪像素发出图像请求。这是一项常见的活动,一般都能理解 我试图记录的是外部收集服务器的响应/确认(为了减少处理和/或数据收集开销,这可能

相关:

我试图了解收集外部服务器http响应状态代码的可行性

上下文: 我正在将一个javascript库加载到页面中,该页面用于捕获DOM元素值,然后将GET请求组装到外部服务器,以将这些值传递给集合。Google Analytics就是一个很好的例子,ga.js库从页面/浏览器中查找数据值,并使用大量查询字符串名称/值对和/或cookie值向外部服务器上的跟踪像素发出图像请求。这是一项常见的活动,一般都能理解

我试图记录的是外部收集服务器的响应/确认(为了减少处理和/或数据收集开销,这可能仅限于响应不是200的情况)我的理解是,响应代码仅在HTTP头中可用。我甚至不知道是否可以以这种方式捕获标头响应。我不清楚如何捕获或记录这些响应代码,并使其在浏览器中可用,以便后续的收集例程(可能是javascript库)可以结合出站服务器域收集这些代码(即主机:google-analytics.com状态:413请求实体太大)并将这些收集的值发送到外部收集环境


作为一个额外的“很高兴拥有”,收集计时也是有益的,但我意识到这是一个明显独立的问题。在请求发出时启动计时器,在请求得到确认时停止计时器,并将状态代码返回到浏览器,将该号码与数据一起发送:(主机:google-analytics.com STATUS:413请求实体太大时间:283ms)。

如果您使用ajax向远程服务器发出请求,以及远程服务器的响应,您可以从对象获取状态代码。请求完成后,
STATUS
属性将为您提供http状态代码

你可以用类似的方法来简化事情

警告:此示例代码未经测试

 var startTime = new Date().value;

 $.get('http://example.com/some/path', { param1:'value1', param2:'value2'})
    .done(function(data, status, jqxhr) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your success things here
    })
    .error(function(jqXHR, textStatus, errorThrown ) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your failure here
      if (typeof console != 'undefined') {
        console.log('your url', jqXHR.status, textStatus, errorThrown);
      }
    })
    ;
注意:某些跨域ajax请求被阻止。远程服务器必须明确设置响应头以允许此类请求