0

我向 CrUX Report API 查询,如开发文档所示

而不是originurl用来获取某些 URL 的数据,所以我的查询看起来像:

curl https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=API_KEY \
  --header 'Content-Type: application/json'   --data '{"url":"https://www.spiegel.de/schlagzeilen/"}'

我对不同的网址一一进行。

我的问题:响应以不同的顺序出现:第一个查询CLS作为第一个指标,第二个查询 -FID依此类推。

此问题不取决于我运行查询的类型:终端中的 cURL、邮递员或 Google 表格中的 Google App 脚本。

我试图在请求中设置一个明确的指标顺序,比如

curl https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=API_KEY \
      --header 'Content-Type: application/json'   --data '{"url":"https://www.spiegel.de/schlagzeilen/","metrics":["cumulative_layout_shift","first_contentful_paint","first_input_delay","largest_contentful_paint"]}'

但响应仍然以随机顺序出现。

:是否有可能在我希望的响应中强制执行指标顺序?

4

1 回答 1

0

虽然metrics输入参数确实允许您列出在结果中获得输出的指标,但它不控制指标的顺序。没有其他输入机制可以强制执行特定的度量排序。

也就是说,metrics响应是一个 JSON 对象,它本质上是一种无序的数据结构。对象键的顺序可能会影响对象的迭代方式,例如Object.fromEntries(response.record.metrics)将按照它们出现的顺序迭代度量。

如果顺序对您的应用程序至关重要,我建议确定性地循环通过一个常量的度量 ID 数组,而不是遍历对象键。例如:

const METRICS = ['first_contentful_paint', 'largest_contentful_paint', 'first_input_delay', 'cumulative_layout_shift'];
const cruxData = METRICS.map(metric => response.record[metric]);

我看到您正在使用 cURL 来发出请求,因此您可以将此策略调整为用于解析结果的任何编程语言。

于 2021-06-01T15:39:02.210 回答