我正在使用 Firefox 的 ADD ON SDK (v1.9) 构建一个扩展,它将能够读取所有 HTTP 请求/响应并计算它们加载的时间。这不仅包括主框架,还包括任何其他加载文件(子框架、脚本、css、图像等)。
到目前为止,我可以使用“observer-service”模块来监听:
- 创建 HTTP 请求时的“http-on-modify-request”。
- 收到 HTTP 响应时的“http-on-examine-response”
- “http-on-examine-cached-response”当 HTTP 响应完全从缓存中接收时
- “http-on-examine-merged-response”当从缓存部分接收到 HTTP 响应时
我的申请遵循以下顺序:
- 通过观察者创建和注册请求。
- 我保存当前时间并将其标记为请求加载的 start_time。
- 通过其中一个观察者接收和注册请求的响应。
- 我保存当前时间并使用之前保存的时间来计算请求的加载时间。
问题: 我无法链接加载的开始时间和结束时间,因为我找不到将请求与响应联系起来的请求 ID(或其他唯一值)。我目前正在使用请求/响应的 URL 将它们绑定在一起,但这是不正确的,因为如果同时加载两个或多个相等的 url,它将引发“竞争条件”。谷歌浏览器通过提供唯一的 requestId 解决了这个问题,但我在 Firefox 上找不到类似的功能。