为什么PerformanceResourceTiming接口值与浏览器值不同?

时间:2015-09-09 06:03:57

标签: javascript google-chrome network-programming resource-timing-api

我编写了一个在域上运行的脚本,并从其他各个域(第三方资源)中提取图像。

我正在尝试使用window.performance.getEntriesByType('resource')对事物进行一般健康检查。看来,由于这些资源位于其他域上,因此响应需要在响应头中设置Timing-Allow-Origin以通过window.performance.getEntriesByType()获取时序数据。

这是真的吗?

此外,当我运行我的脚本时,Chrome浏览器返回有用的信息。实际上,如果我能以编程方式获得它,我可以使用这些数据。但Chrome显示的数据和window.performance.getEntriesByType()中返回的数据不同。

我附上了截图,显示了Chromes加载资源的有用时序细分。由性能入口对象的数据不匹配。

例如,请参阅右侧时序图中的DNS查找时间,然后查看性能条目对象中的domainLookupStart和domainLookupEnd值。这些值彼此不匹配。

为什么会出现差异?如何获取Chrome的数据?如何从性能输入对象中获取Chrome显示的内容?

谢谢!

Chrome Resource Load Timing Graph

1 个答案:

答案 0 :(得分:1)

你现在可能已经想到了这一点,但我有一个类似的问题并且发现了这一点。

In [15]: %timeit matnb(101) 10000 loops, best of 3: 31.9 µs per loop 对象中的大多数详细字段都报告零,因为未设置PerformanceResourceTiming标题的跨域资源as per the spec

  除非时间允许检查算法,否则

connectStart必须返回零   通行证。

与其他字段类似,例如DNS查找字段。

至于为什么开发者控制台允许您查看此信息,即使您无法以编程方式访问它,它也只是Chrome的一项功能,可让您查看此信息。隐藏它更多的是礼貌而不是安全功能;规范规定了可以通过Resource Timing API共享的内容,但浏览器仍然可以访问信息,并可能决定以其他方式与用户共享,如您所见。