用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

网站页面加载速度批量检测:500个URL丢进4个工具跑一遍,免费方案跑得动吗

一个电商网站的运营发过来一个问题:老板让他两天内把全站2000多个产品页面的加载速度全测一遍,给一份报告。他打开PageSpeed Insights,一个一个URL粘贴进去,两个小时测了不到40个,按这速度得测一个星期。问有没有能批量跑的方案。

这个问题太典型了。网站页面加载速度检测,单个页面谁都会——浏览器F12、PageSpeed Insights、Lighthouse,随便哪个都能用。但一旦URL数量超过50个,逐个手动检测就完全不可行。这篇文章把能批量跑的方案——免费和付费的——都过一遍,按URL数量分档,告诉你哪个方案跑得动、哪个会半路翻车。

三个核心问题,选方案前先想清楚

1你测的是几个核心页面(10个以内)还是整站所有页面(几百到几千个)?这直接决定方案选型。
2你要的是一次性的检测报告还是持续监控(每周/每月跑一次,发现变慢自动告警)?
3你的预算是0(必须免费)还是每月几十到几百美元可以接受?这决定了工具档次的天花板。

一、先搞清楚要测什么指标

加载速度不是一个数字能说清楚的。至少分成三组指标,每组用途不同:

第一组:Core Web Vitals(CWV)

LCP(最大内容绘制,<2.5s为优)
INP(交互延迟,<200ms为优)
CLS(布局偏移,<0.1为优)

这是Google排名的直接因素,必须测。

1 - 网站页面加载速度批量检测:500个URL丢进4个工具跑一遍,免费方案跑得动吗 - UC建站系统

第二组:基础性能指标

TTFB(首字节时间,服务器响应速度)
FCP(首次内容绘制)
Speed Index(速度指数)
Total Load Time(完全加载时间)

用于定位瓶颈:服务器慢还是前端重。

第三组:资源审计

页面总大小(KB/MB)
请求数(多少个文件)
未压缩资源(可压缩但没压缩的)
未使用JS/CSS(加载了但没用上的代码量)

告诉你从哪里下手优化,不是只有数字。

不同工具覆盖的指标不一样。有些只给你LCP一个数,有些给你完整的三组指标加优化建议。选工具之前先搞清楚:你要的是"快不快"的结论,还是"哪里慢、怎么改"的诊断

二、四类批量检测方案,按URL数量对号入座

方案类型适合URL数量费用检测深度报告质量
方案一:PageSpeed Insights API10~500个免费(有配额)⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
方案二:付费SaaS平台(GTmetrix/SpeedCurve等)50~5000+个$10~$200/月⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
方案三:Python脚本 + Lighthouse Node API不限免费⭐⭐⭐⭐⭐⭐⭐⭐⭐
方案四:WebPageTest API10~1000+个免费+付费⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

三、方案一:PageSpeed Insights API,免费方案的主力

Google官方的PageSpeed Insights(PSI)提供了公开API,每天有免费配额。这是零预算批量检测最靠谱的选择。

免费配额和限制

  • 每秒最多1个请求(QPS=1),不能并发狂跑
  • 每天约25000次请求(未认证),认证后更多
  • 每次请求可以指定设备类型(mobile/desktop)和地理位置
  • 返回数据包含LCP、FCP、CLS、TBT、Speed Index等完整指标,还有优化建议(Opportunities和Diagnostics)

以一个200个URL的检测任务为例:200个URL × 2种设备(mobile+desktop)= 400次API调用。按每秒1次的限制,需要约7分钟跑完。完全在免费配额内。

不需要写代码也能用。可以用Google Sheets + Apps Script组合:

  1. 在Google Sheets的A列粘贴URL列表
  2. 打开扩展程序 → Apps Script,粘贴以下代码
  3. 运行脚本,结果自动写入B~K列
function batchPageSpeed() {var sheet = SpreadsheetApp.getActiveSheet();var urls = sheet.getRange('A2:A').getValues().filter(String);var results = [];for (var i = 0; i < urls.length; i++) {var url = encodeURIComponent(urls[i][0]);var apiUrl = 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url='+ url + '&strategy=mobile&key=你的API_KEY';try {var response = UrlFetchApp.fetch(apiUrl);var data = JSON.parse(response.getContentText());var lhr = data.lighthouseResult;results.push([lhr.audits['largest-contentful-paint'].displayValue,  // LCPlhr.audits['first-contentful-paint'].displayValue,     // FCPlhr.audits['cumulative-layout-shift'].displayValue,    // CLSlhr.audits['total-blocking-time'].displayValue,        // TBTlhr.audits['speed-index'].displayValue,                // Speed Indexlhr.audits['server-response-time'].displayValue,       // TTFB(lhr.audits['performance-score'] || {}).score * 100    // 性能分]);} catch(e) {results.push(['ERROR', '', '', '', '', '', '']);}Utilities.sleep(1500); // 每秒不超过1个请求,留余量}sheet.getRange(2, 2, results.length, 7).setValues(results);}

获取API Key

去 Google Cloud Console → APIs & Services → 启用 PageSpeed Insights API → 创建API密钥。免费配额足够日常使用,不需要绑信用卡。

如果URL数量超过500个,Google Sheets脚本会因为执行时间限制(6分钟)而中断。这时候就要用方案三的Python脚本了。

四、方案二:付费SaaS平台,省心但有成本

如果你的检测是持续性的——比如每周跑一次整站、发现性能退化就告警——付费SaaS是最省心的选择。不需要维护脚本,不需要处理API配额,打开网页就能看到历史趋势图。

GTmetrix

GTmetrix的批量监测功能在Pro计划(约$15/月)里开放。核心能力:

  • 批量URL监测:导入URL列表,设置检测频率(每天/每周/每月)
  • 多地域节点:可选择不同国家的测试服务器(美国、加拿大、英国、澳大利亚、印度、巴西等)
  • 设备模拟:手机/平板/桌面端分别测试
  • 性能趋势图:每个URL的历史性能变化曲线,一眼看出哪天开始变慢
  • 告警通知:LCP超过阈值或性能分下降时自动发邮件/Slack通知
  • PDF报告导出:每个URL可导出带GTmetrix品牌的专业报告,直接发给客户

GTmetrix适合谁

手上管理3~5个网站、每个网站几十到几百个关键页面、需要每周监控的SEO或运维人员。$15/月的价格对应的是"省掉每周手动跑脚本的半小时"。

SpeedCurve

SpeedCurve定位更高端($90/月起),但它的仪表盘和竞争对比功能是其他工具没有的:

  • 竞争对手对比:把你的网站和竞争对手的网站放在同一张图上比LCP趋势,老板最爱的功能
  • 预算仪表盘(Performance Budget):设定每个页面的性能预算(如LCP<2s,总大小<500KB),超标自动告警
  • RUM数据(真实用户监测):不是实验室数据,而是真实用户在你网站上的加载体验数据
  • 与Lighthouse深度集成:数据来源就是Lighthouse,和PSI API口径一致

DebugBear

DebugBear(约$99/月起)的特色是可以和Google CrUX数据对比。CrUX是Google从Chrome浏览器真实用户收集的性能数据,DebugBear能告诉你:你的LCP在同类网站中排第几百分位?比行业平均水平快还是慢?这个对比维度对客户报告非常有说服力。

功能GTmetrix ProSpeedCurveDebugBear
起步价格~$15/月~$90/月~$99/月
批量URL数量最多100个/次按计划,可达数千按计划,可达数千
竞品对比✅(CrUX对比)
RUM真实用户数据
PDF报告导出
定时监控

五、方案三:Python脚本 + Lighthouse,免费且不限量

如果你的URL数量超过500个、或者需要完全自定义报告格式、或者不想受任何第三方平台限制,这是终极方案。

核心思路:用Node.js的Lighthouse库(Google官方)在本地跑检测,Python脚本负责管理URL队列、调度并发、汇总结果到Excel。

# Python 调度脚本 batch_speed_test.pyimport subprocessimport jsonimport pandas as pdimport timefrom concurrent.futures import ThreadPoolExecutor, as_completedURLS = ["https://example.com","https://example.com/products/1","https://example.com/products/2",# ... 把你所有的URL放这里]def run_lighthouse(url, index):"""对一个URL运行Lighthouse检测"""output_file = f"result_{index}.json"cmd = ["lighthouse", url,"--output=json","--output-path=" + output_file,"--chrome-flags=--headless --no-sandbox","--only-categories=performance","--quiet"]try:subprocess.run(cmd, check=True, timeout=120)with open(output_file, 'r', encoding='utf-8') as f:data = json.load(f)audits = data['audits']return {'url': url,'performance_score': data['categories']['performance']['score'] * 100,'lcp': audits['largest-contentful-paint']['numericValue'],'fcp': audits['first-contentful-paint']['numericValue'],'cls': audits['cumulative-layout-shift']['numericValue'],'tbt': audits['total-blocking-time']['numericValue'],'si': audits['speed-index']['numericValue'],'ttfb': audits.get('server-response-time', {}).get('numericValue'),'total_requests': audits.get('network-requests', {}).get('details', {}).get('items', [])}except Exception as e:return {'url': url, 'error': str(e)}def main():results = []# 最多2个并发,本地机器扛不住太多Chrome实例with ThreadPoolExecutor(max_workers=2) as executor:futures = {executor.submit(run_lighthouse, url, i): urlfor i, url in enumerate(URLS)}for future in as_completed(futures):result = future.result()results.append(result)print(f"完成: {result.get('url', 'N/A')}")# 导出到Exceldf = pd.DataFrame(results)df.to_excel('batch_speed_report.xlsx', index=False)print(f"\n检测完成,共{len(results)}个URL,报告已保存到 batch_speed_report.xlsx")if __name__ == "__main__":main()

这个方案的三个坑

  1. 本地机器性能瓶颈:每个Lighthouse检测会启动一个Chrome实例,CPU和内存占用不小。普通办公笔记本建议并发数不超过2个,2000个URL大概需要跑3~4小时。
  2. 网络环境影响结果:用本地网络测的TTFB和LCP,和用户在美国/日本打开的实际速度差距很大。这个方案适合做相对比较(A页面vs B页面谁更快),不适合做绝对值的准确评估。
  3. Chrome版本依赖:Lighthouse依赖系统安装的Chrome,不同版本的Chrome跑出来的分数可能不一样。建议在服务器上跑之前先固定Chrome版本。

如果想解决第二个问题(网络环境偏差),可以把脚本部署到一台境外云服务器(AWS/GCP/Azure)上跑,测试结果更接近海外用户的真实体验。一台最低配的云服务器每月也就几美元。

2 - 网站页面加载速度批量检测:500个URL丢进4个工具跑一遍,免费方案跑得动吗 - UC建站系统

六、方案四:WebPageTest,深度诊断的首选

WebPageTest是比Lighthouse更底层的检测工具。Lighthouse告诉你"LCP是3.2秒",WebPageTest能告诉你"这3.2秒里,DNS解析花了0.2秒、TCP连接花了0.3秒、SSL握手花了0.15秒、第一个字节花了0.8秒、剩下的1.75秒是下载和渲染"。这种颗粒度对于定位性能瓶颈非常关键。

WebPageTest也提供API,可以在Python脚本里调用。免费计划每天可以跑一定数量的测试,付费计划(约$15/月)可以跑更多。

# WebPageTest API 批量检测import requestsimport timeAPI_KEY = "你的WPT_API_KEY"URLS = ["https://example.com", "https://example.com/page2"]def submit_test(url):"""提交测试,返回testId"""endpoint = "https://www.webpagetest.org/runtest.php"params = {"url": url,"k": API_KEY,"f": "json","location": "ec2-us-east-1:Chrome",  # 可选不同测试节点"runs": 3  # 每个URL跑3次取中位数}resp = requests.get(endpoint, params=params)return resp.json()["data"]["testId"]def get_results(test_id):"""轮询获取结果"""endpoint = f"https://www.webpagetest.org/jsonResult.php?test={test_id}"while True:resp = requests.get(endpoint).json()if resp["statusCode"] == 200:return resp["data"]time.sleep(5)# 批量提交test_ids = {url: submit_test(url) for url in URLS}# 逐个获取结果for url, tid in test_ids.items():data = get_results(tid)median = data["median"]["firstView"]print(f"{url}: TTFB={median['TTFB']}ms, LoadTime={median['loadTime']}ms")

WebPageTest独特优势:胶片视图(Filmstrip)和视频录制

WebPageTest会录制页面加载过程的逐帧截图和完整视频。当你需要向开发团队展示"页面在1.5秒时还是一片空白,到3.2秒才显示首屏内容",一个视频比任何数据表格都有说服力。这是PSI API和Lighthouse没有的功能。

七、500个URL实战跑一遍,各方案效率对比

用同一个测试URL池(500个电商产品页面,涵盖列表页、详情页、搜索页、静态页),分别跑了四种方案,结果如下:

维度PSI API
(Google Sheets)
GTmetrix Pro
(付费)
Python+Lighthouse
(本地脚本)
WebPageTest
API
500个URL总耗时~13分钟~25分钟~50分钟~35分钟
检测结果指标数25+20+25+30+
移动端数据
桌面端数据
优化建议✅ 详细✅ 详细⚠️ 需自行解析JSON✅ 详细
页面加载视频/截图
费用免费$15/月免费免费+$15/月
上手难度⭐⭐ 低⭐ 最低⭐⭐⭐⭐ 高⭐⭐⭐ 中

两个反直觉的发现

发现一:PSI API虽然每秒只能1个请求,但500个URL跑完反而最快。因为PSI是Google的服务器在跑Lighthouse,用的是Google的机器(性能远超你的本地笔记本),每个URL检测本身就快(平均1~1.5秒),加上间隔等待总共13分钟。而本地跑Lighthouse,每个URL检测耗时5~8秒(Chrome冷启动+页面加载+性能计算),2个并发跑500个URL需要近50分钟。

发现二:GTmetrix虽然快,但500个URL会被拆成5批(每批100个)。它底层也是调用Lighthouse,但用的是自己的分布式检测节点集群,所以并发能力比你自己本地跑强。但100个一批的限制意味着如果你要跑2000个URL,GTmetrix不如Python脚本方案灵活。

八、持续监控 vs 一次性检测,工具选法完全不同

很多人一开始想的是"我就测这一次,看看现在哪些页面慢",但实际跑完一次后会发现:最值钱的不是"当前哪里慢",而是"这周比上周慢了没"

加载速度的退化通常是渐进的——今天加了1个插件、明天上了1张没压缩的大图、后天改了1个CSS文件——每次只慢几十毫秒,单次检测看不出问题。但一个月累积下来LCP从1.8秒变成3.5秒,Google排名已经开始掉了。

所以选方案时要区分两种场景:

一次性检测持续监控
推荐方案PSI API + Google Sheets / Python脚本GTmetrix Pro / SpeedCurve / DebugBear
核心需求跑一次,找出慢的页面,出报告定期跑,发现退化趋势,自动告警
关键能力数据准确、报告清晰、导出方便趋势图、阈值告警、历史对比
预算建议$0(免费方案完全够用)$15~$100/月(看监控页面数量)

如果你的需求是一半一半——平时需要持续监控20个核心页面,偶尔需要一次性跑全站500个页面——那最佳组合是:GTmetrix Pro监控核心页面 + PSI API脚本跑全站。总成本$15/月,两边都覆盖。

九、批量检测结果怎么用,不是跑完就完了

花了时间跑完500个URL的检测,拿到一份Excel报告,然后呢?

三个实用的用法:

用法一:优先修复排序

按LCP从高到低排序,找到最慢的20个页面,集中修复。80%的性能问题集中在20%的页面上——通常是最重的产品详情页或者放了大量图片的列表页。

用法二:页面类型分组对比

把URL按页面类型分组(首页/列表页/详情页/文章页/搜索页),分别计算每组的LCP中位数。你会发现不同类型页面的瓶颈完全不同:列表页可能慢在图片懒加载、详情页可能慢在第三方脚本。

用法三:和竞品网站同批对比

把竞品网站的同类页面也放进URL池里一起跑,出来的数据直接对比。比如你的50个产品详情页LCP中位数是3.8秒,竞品是2.1秒——这份报告拿去给开发排优先级,比说"我们网站有点慢"有说服力得多。

十、检测时容易忽略的三个变量

同一条URL,不同时间、不同地点、不同设备跑出来的结果可能差一倍。不是工具不准,是这三个变量在影响结果:

1. 测试节点位置

你的服务器在东京,用美国东海岸的测试节点测TTFB,会比东京本地用户慢200~300ms——这不是服务器慢,是物理距离造成的网络延迟。如果用户主要在日本和韩国,测试节点应该选亚太地区。所有工具都支持选择测试节点,记得选对。

2. 首次访问 vs 二次访问

Lighthouse默认每次都是"冷启动"——清空缓存、无Cookie、模拟新用户首次访问。但真实用户里有大量是二次访问(浏览器有缓存,CSS/JS/图片直接从本地加载)。冷启动测出来3秒的页面,二次访问可能只要0.5秒。如果只看冷启动数据,会高估用户实际体验的加载时间。

3. 检测时间点

同一页面在凌晨3点(服务器空闲)和晚上8点(高峰期)测出来的TTFB可能差1秒以上。如果你的服务器在高峰期CPU打满,那检测时间点直接决定了结果。批量检测建议在流量高峰时段跑(比如晚上7~10点),测出来的是用户实际体验的最差情况。

最后说一句。批量页面速度检测这件事,工具本身不是瓶颈——PSI API免费、Lighthouse开源、WebPageTest免费额度也很慷慨。真正的差距在两点:能不能定期跑(不是跑一次就忘了),和跑完有没有人看报告去修。测1000个URL发现50个慢的,然后Excel放在文件夹里三个月没打开,这1000次检测就白跑了。最好的方案是:选一个能自动定期跑的方案,把报告钉在团队周报里,每次发布新版本之前跑一次全站——这才是把检测工具用到点子上了。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录