问题标签 [resource-timing-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
167 浏览

selenium - 资源计时 API 未在 Selenium 中显示正确的资源

我安装了最新版本的 geckodriver,并且正在运行最新的 Firefox 版本。我编写了一个 selenium 脚本来在 Firefox 中打开一个 URL 并保持浏览器打开(我没有调用 driver.close() 或 driver.quit())

这是脚本的样子

Resource Timing API 为该网站报告的资源数量 > 100。 通过硒首次加载 nrk.no

现在,网站只是再次重新加载,以便从缓存中获取资源。 注意:我只需在地址栏中按 enter 即可刷新

Resource Timing API 报告的资源数量 < 40。与 Networks 选项卡的 Developer Tools 中资源数量的差异也是如此。每个网站都在发生这种情况。

nrk.no 的第二次加载

如果我只是运行普通的 Firefox 并以相同的方式刷新页面,则不会发生这种情况。无论我刷新网页的次数如何,资源编号始终匹配。

0 投票
0 回答
134 浏览

google-chrome-extension - 我们是否有等效的资源计时 API 可以从浏览器扩展中使用

我想收听来自页面的所有请求(包括来自它可能拥有的 iframe),并为所有请求获取类似于资源计时 api 的指标。我希望能够从后台脚本执行此操作。

我尝试直接注入一个脚本标签,该标签将监听 dom 更改事件,然后使用该数据。但请参阅那里的 2 个问题 1. 它没有获取 iframe 的所有 dom 更改事件。2. 我无法找到从 iframe 发出的额外调用。

我的内容脚本有这样的东西

我注入 dom 的脚本看起来像这样

但是我上面的代码没有检测到 dom 更改,我也无法从 iframe 中获取调用。不过,我确实在 chrome 开发人员工具中看到了这些请求。这里我的 iframe 来自同一个域。

所以我想改为切换到后台脚本,然后收听页面上发生的所有调用并获取资源的时间。

0 投票
0 回答
131 浏览

javascript - 性能时间线跟踪中的“CommitLoad”事件是什么?

我正在尝试找出什么是CommitLoad事件。我在记录所有跟踪事件并搜索与主要 html 网络请求时间相关的事件时发现了它:

我运行 200 测试以确定CommitLoad的发生时间,它发生在ResourceFinish之前:

计时

但我在 Chrome 性能面板中找不到CommitLoad :

铬性能视图

这个黄色事件在完成加载(ResourceFinish)之前大约 79 毫秒,它被称为Event: readystatechange。也许这是一个线索。

这是我的完整trace.json

0 投票
1 回答
310 浏览

javascript - performance.now() 是否从 navigationStart 开始?

performance.now() 的起始时间是什么时候?是navigationStart、requestStart 还是别的什么?

0 投票
2 回答
95 浏览

resource-timing-api - 为什么资源计时 api 将某些资源的编码、解码和传输大小设为 0?

我正在使用资源计时 api 来捕获页面所有资源的编码、解码和传输大小,但对于某些资源,它为所有 3 个键提供零。请帮我解决这个问题。

0 投票
0 回答
72 浏览

javascript - Chrome/Firefox 下的 DNS 解析时间比 Safari 多一秒

Short:我试图弄清楚 Chrome 和 Firefox 如何在 macOS 上进行 DNS 查找与 Safari 进行 DNS 查找的根本区别。

详细信息:我有一个 HTML 页面,它向我的服务器上随机生成的(基于 GUID 的)主机名发出 AJAX 请求。在 Chrome 或 Firefox 中加载页面时,ResourceTiming 对象显示 DNS 解析比在 Safari 中花费的时间长一秒(大约 1000 毫秒)。

更多细节:无论是什么原因造成的,它只发生在这个特定的 macOS 实例上。即使是在同一台笔记本电脑上运行的虚拟机实例也没有问题。

从 Chrome 访问时的输出:

从 Safari 访问时:

显然,其他时间本身会有所不同,但 ResourceTiming 的 domainlookup 部分始终相差约 1000 毫秒。

感觉内部发生了某种超时,但我不确定,我真的不知道如何深入挖掘。

测试 HTML 页面设置在https://lax-ns8ds.com/wtf.html,尽管自己运行它可能不会显示任何内容(因为我自己在我的任何其他机器或 VM 实例上都看不到它自己的)。

我能想到的最后一个细节:我尝试使用 dtruss 来查看是否可以看到正在进行的系统调用的差异,这会给我一个关于 Chrome 和 Safari 之间差异的提示,但这并没有走得太远。

0 投票
2 回答
143 浏览

javascript - NavigationTimingAPI 可以用于异步调用吗?

我目前正在我们的项目中实现性能测量功能,它使用自定义元素 v1。

NavigationTimingAPI提供了对不同导航类型(导航、重新加载、浏览器后退/前进)的非常详细的测量:

在此处输入图像描述

是否也可以为异步调用提供相同的(或类似的详细信息)?或者是否还有其他我不知道的 API?

也就是说,当页面完全加载并且某些用户交互或事件触发服务器定位资源上的 POST 或 GET 时。

到目前为止,我发现的唯一一件事是使用performance.mark().

我在这里错过了什么重要的东西吗?

0 投票
0 回答
51 浏览

javascript - 为什么在浏览器中缓存的脚本比 iframe 源更多

我的网站有两个独立的资源——一个 JS 文件(比如 myjavascript.js)和一个 iframe(src:myiframe.html)。它们中的每一个都在每次页面加载时加载(即,它们以相同的频率加载)。两者都有相同的缓存过期时间(6 个月)。JS 文件 (40 kB) 比 HTML 文件 (30 kB) 大。

基于相对大小,我预计用户设备中的浏览器缓存较小的 HTML 文件比较大的 JS 文件更频繁。但是,来自浏览器性能资源计时的日志显示,JS 文件比 iframe 文件更频繁地被缓存。

这种行为有合理的解释吗?浏览器在缓存方面是否以不同的方式处理 JS/HTML 文件/其他资源?它们有何不同?是否有推荐的方法来增加某些资源的缓存?(在这种情况下,我正在尝试提高 HTML 文件的缓存率)

0 投票
0 回答
226 浏览

javascript - Resource Timing API - 有没有办法检索 HTTP 请求方法?

使用资源计时 api,window.performance.getEntries()返回带有计时信息的性能条目列表。此类信息显示在浏览器网络调试器中。见这里:https ://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API

在对象/资源计时 API 上使用window.performance.getEntries()或其他方法performance,有没有办法获取 HTTP 方法(Get、Post、Put、Delete、Patch)?我看不到在PerformanceResourceTiming接口上获取 HTTP 方法的方法,例如:https ://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming

0 投票
1 回答
225 浏览

javascript - PerformanceResourceTiming.responseStart 和 PerformanceResourceTiming.requestStart 都为 0,表示状态正常的 http 请求

我想测量 HTTP 请求的 TTFB(到第一个字节的时间)。我在亚马逊 S3 服务器上托管了一个 0KB 的 pdf 文件,我正在使用fetchapi 来获取它。这是我的代码:

在 chrome 开发者网络选项卡中,我可以看到请求及其所有时间信息:

在此处输入图像描述

但我无法在PerformanceResourceTiming文档中访问此信息。事实上,包括requestStart和在内的许多属性responseStart都没有设置。将记录打印perf到控制台显示:

在此处输入图像描述

这很奇怪,因为使用这个 url 做同样的事情就很好:"https://speed.cloudflare.com/__down?bytes=0"