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

Neo*_*o84 3 javascript firebug page-load-time har

在下图中,我想要网页的总响应时间。我似乎无法在文件示例 HAR 文件中找到它,即在这种情况下为 38.79s。有谁知道如何得到这个?

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

在此处输入图片说明

在某些时候,我想要一个 Java 程序来查找和提取总响应时间。

Seb*_*ner 6

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

请求结束时间由请求的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;
Run Code Online (Sandbox Code Playgroud)

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

重要的提示:

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