我编写了一个在域上运行的脚本,并从其他各个域(第三方资源)中提取图像。
我正在尝试使用window.performance.getEntriesByType('resource')
对事物进行一般健康检查。看来,由于这些资源位于其他域上,因此响应需要在响应头中设置Timing-Allow-Origin
以通过window.performance.getEntriesByType()
获取时序数据。
这是真的吗?
此外,当我运行我的脚本时,Chrome浏览器会返回有用的信息。实际上,如果我能以编程方式获得它,我可以使用这些数据。但Chrome显示的数据和window.performance.getEntriesByType()
中返回的数据不同。
我附上了截图,显示了Chromes加载资源的有用时序细分。由性能入口对象的数据不匹配。
例如,请参阅右侧时序图中的DNS查找时间,然后查看性能条目对象中的domainLookupStart和domainLookupEnd值。这些值彼此不匹配。
为什么会出现差异?如何获取Chrome的数据?如何从性能输入对象中获取Chrome显示的内容?
谢谢!
答案 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共享的内容,但浏览器仍然可以访问信息,并可能决定以其他方式与用户共享,如您所见。