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

使用Scrapy + Splash能否获取页面的TTFB(首字节时间)?

Scrapy + Splash 实现TTFB(首字节时间)获取方案

完全可以通过Scrapy + Splash获取到和Chrome网络面板定义一致的首字节时间(TTFB),可满足服务端渲染页面的速度测量需求,具体实现方式如下:

  • 核心原理:Splash内置的HAR(HTTP归档)记录功能会完整存储所有请求的时间线数据,其中主文档请求条目的timings.wait字段就是标准定义的TTFB,即从请求发送到收到服务器返回第一个字节的时间差,和Chrome网络面板的TTFB数值对齐。

实现步骤

1. 编写Splash侧Lua脚本

在Lua脚本中开启HAR采集,提取主文档的TTFB字段返回,参考脚本如下:

function main(splash, args)
  -- 开启HAR数据采集
  splash:har_enable()
  -- 跳转目标页面
  assert(splash:go(args.url))
  -- 等待页面基础加载完成,可根据实际场景调整等待逻辑
  splash:wait(0.5)
  -- 读取HAR数据
  local har = splash:har()
  -- 提取主文档请求的TTFB(无重定向场景取第一个条目即可,有重定向需遍历匹配最终请求URL)
  local main_request = har.entries[1]
  local ttfb = main_request.timings.wait
  -- 返回数据:页面HTML、TTFB、页面全加载时间
  return {
    html = splash:html(),
    ttfb_ms = ttfb,
    full_load_time_ms = har.pages[1].pageTimings.onLoad
  }
end

2. 编写Scrapy侧请求逻辑

通过SplashRequest调用上述Lua脚本,直接从返回结果中读取TTFB数值,参考代码如下:

import scrapy
from scrapy_splash import SplashRequest

# 直接把Lua脚本定义在这里即可
LUA_SCRIPT = """
上述Lua脚本完整内容
"""

class SSRPerformanceSpider(scrapy.Spider):
    name = "ssr_performance"
    # 替换为你要测试的服务端渲染页面地址
    start_urls = ["https://example.com/ssr-page"]

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(
                url,
                callback=self.parse_performance,
                endpoint="execute",
                args={
                    "lua_source": LUA_SCRIPT,
                    "timeout": 30,
                }
            )
    
    def parse_performance(self, response):
        yield {
            "page_url": response.url,
            # 直接获取返回的TTFB,单位为毫秒
            "ttfb_ms": response.data["ttfb_ms"],
            "full_page_load_time_ms": response.data["full_load_time_ms"],
            "page_html": response.data["html"]
        }

注意事项

  • 如果目标页面存在3xx重定向,不要直接取har.entries[1],需要遍历所有entries匹配最终页面URL对应的请求条目,再提取TTFB,避免拿到重定向请求的TTFB数据。
  • TTFB的测量误差通常在10ms以内,完全满足服务端渲染速度的测量需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 23:48:02