javascript – 如何从HAR文件中获取总页面响应时间?

在下图中,我想要来自网页的总响应时间.我似乎无法在文件sample HAR file中找到它,在这种情况下是38.79s.有谁知道如何得到这个?

我将使用Selenium以及Firebug和NetExport来导出HAR文件,但是现在我正在尝试手动执行.添加单个响应不会给出正确的数字.

在某些时候,我希望Java程序能够找到并提取总响应时间.

解决方法:

总加载时间不是通过汇总所有请求时间而是通过最新请求结束时间来计算的.从图形上讲,它是在最右边结束的请求栏的右端.在您的示例屏幕截图中,它是最后一个,第三个到最后一个或第四个到最后一个请求.

请求结束时间由请求的startedDateTime属性指示的请求开始时间加上响应所需的时间跨度计算,该时间跨度可通过每个请求的time属性获得.
要获得最大请求结束时间,您需要遍历所有请求并比较每个请求的结束时间.请参阅以下代码:

var startTime = new Date(har.log.pages[0].startedDateTime);
var loadTime = 0;

// Loop over all entries to determine the latest request end time
// The variable 'har' contains the JSON of the HAR file
har.log.entries.forEach(function(entry) {
  var entryLoadTime = new Date(entry.startedDateTime);
  // Calculate the current request's end time by adding the time it needed to load to its start time
  entryLoadTime.setMilliseconds(entryLoadTime.getMilliseconds() + entry.time);
  // If the current request's end time is greater than the current latest request end time, then save it as new latest request end time
  if (entryLoadTime > loadTime) {
    loadTime = entryLoadTime;
  }
});

var loadTimeSpan = loadTime - startTime;

执行此代码的变量loadTimeSpan将包含所需的时间跨度(以毫秒为单位).

重要的提示:

如此计算的时间跨度可能仍然与Firebug或在线HAR Viewer显示的时间不同,因为它们根据两个请求之间经过的时间将请求分成不同的阶段.然后,他们计算从每个阶段的第一个请求到最后一个请求的时间跨度,并总结那些时间跨度.

上一篇:HDFS 2.X新特性


下一篇:QSplitter测试