javascript - 为什么 PerformanceResourceTiming 接口(interface)值与浏览器值不同?

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

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

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

这是真的吗?

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

我附上了一张截图,它显示了 Chrome 加载资源的有用时间分解。通过性能条目对象的数据不匹配。

比如看右边时序图中的DNS Lookup时间,再看性能入口对象中的domainLookupStart和domainLookupEnd值。这些值彼此不匹配。

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

谢谢!

Chrome Resource Load Timing Graph

最佳答案

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

对于未设置 Timing-Allow-Origin header 的跨源资源,PerformanceResourceTiming 对象中的大多数详细字段报告为零,as per the spec :

connectStart must return zero unless timing allow check algorithm passes.

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

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

关于javascript - 为什么 PerformanceResourceTiming 接口(interface)值与浏览器值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32471973/

相关文章:

javascript - 将列表项增长为图形

javascript - Node-Red 发送二进制文件

javascript - 如何在 React Native 中的 <Text> 组件中插入换行符?

javascript - Windows Azure 并使用 Node js 进行 Restify

c++ - 担心处理对 accept() 的错误调用

google-chrome - 在 Chrome Web Serial API 上获取串口信息

google-chrome - 在 Chrome 中保存浏览 session

google-chrome - 'X-DevTools-Emulate-Network-Conditions-Client-Id' header key 代表什么?

networking - 上传文件后ftp4j读取超时

windows - 套接字泄漏在netstat和tcpview中未显示的Windows中