You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中调用GTmetrix REST API v2.0实现网站性能测试的问题咨询

GTmetrix API 2.0 R语言对接实现指导

身份认证规则

GTmetrix 2.0 API使用HTTP基本认证方式:请求时用户名字段填写你在GTmetrix后台获取的API密钥,密码字段为空字符串即可。

完整实现代码

基于你已写的代码扩展如下:

library(httr)
library(jsonlite)

# -------------------------- 参数配置 --------------------------
# 替换为你自己的GTmetrix API密钥
API_KEY <- "你的GTmetrix API密钥"
# 测试目标站点
test_url  <- "https://www.berkeley.edu"
# 测试地区ID
location_id <- 1
# 测试浏览器ID
browser_id <- 3
# 轮询间隔时间(秒,避免触发频率限制)
poll_interval <- 5

# -------------------------- 1. 提交测试请求 --------------------------
test_submit_res <- POST(
  url = "https://gtmetrix.com/api/2.0/tests",
  authenticate(user = API_KEY, password = ""),
  content_type("application/vnd.api+json"),
  body = toJSON(list(
    data = list(
      type = "test",
      attributes = list(
        url = test_url,
        location = location_id,
        browser = browser_id
      )
    )
  ), auto_unbox = TRUE)
)

# 解析提交结果
submit_data <- fromJSON(content(test_submit_res, "text"))
test_id <- submit_data$data$id
test_state_url <- submit_data$data$links$self

# -------------------------- 2. 轮询等待测试完成 --------------------------
repeat {
  state_res <- GET(test_state_url, authenticate(user = API_KEY, password = ""))
  state_data <- fromJSON(content(state_res, "text"))
  current_state <- state_data$data$attributes$state
  
  if (current_state == "completed") {
    message("测试完成,开始提取结果")
    test_result <- state_data
    break
  } else if (current_state == "error") {
    stop("测试失败,错误信息:", state_data$data$attributes$error)
  } else {
    message("测试进行中,当前状态:", current_state, ",等待", poll_interval, "秒后重试")
    Sys.sleep(poll_interval)
  }
}

# -------------------------- 3. 提取测试结果 --------------------------
# 核心性能指标示例
performance_score <- test_result$data$attributes$scores$performance
structure_score <- test_result$data$attributes$scores$structure
lcp <- test_result$data$attributes$metrics$largest_contentful_paint
cls <- test_result$data$attributes$metrics$cumulative_layout_shift
fid <- test_result$data$attributes$metrics$first_input_delay

# 打印结果
cat("性能得分:", performance_score, "\n",
    "结构得分:", structure_score, "\n",
    "最大内容绘制:", lcp, "ms\n",
    "累积布局偏移:", cls, "\n",
    "首次输入延迟:", fid, "ms\n", sep = "")

注意事项

  • 调用前请先确认你使用的location_id、browser_id与GTmetrix提供的参数枚举值匹配
  • 免费版账号有请求频率和并发测试数限制,建议轮询间隔不低于3秒,不要短时间内提交大量测试
  • 所有测试指标均可从test_result$data$attributes路径下提取,可根据自身需求筛选需要的字段

内容的提问来源于stack exchange,提问作者Mohanasundaram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:24:03