如何通过测量首次字节延迟和使用服务器时间

确定网站性能瓶颈的方法:测量首次字节延迟和使用 Server-Timing 头信息

关键要点

  • 本文探讨如何利用 Server-Timing 头信息 简化网站性能排查,定位瓶颈。
  • 网站性能关键在于 首次字节时间(TTFB) ,经验值为 800 毫秒以内。
  • 通过 CloudFront 使用 Server-Timing 头信息来获取准确信息,从而快速定位请求响应的性能问题。

本篇文章介绍如何通过利用 Server-Timing 头信息 来有效识别网站性能瓶颈。网站性能问题经常出现,但查找其根本原因往往是一项艰巨的任务。本文将介绍如何通过这项技术简化性能故障排除过程。这种头信息允许后端组件在响应用户请求时传达与性能监控相关的计时指标和其他见解。

网站访问涉及复杂的服务器端过程,包括内容优化(如图像转换)和从数据库获取动态数据。识别导致请求缓慢的具体服务器和过程,常常需要关联和分析多个日志,这可能耗时很长。通过在单个日志行中建立用户体验质量信号与性能服务器端指标之间的直接联系,可以简化这一过程,迅速找到并追踪性能问题。

以下是一些使用户体验更佳的方法:

方法描述
利用 Server-Timing 头信息将服务器和客户端性能指标合并,使请求响应周期的性能提供更全面的视图。
测量用户延迟通过测量 TTFB 来识别性能问题。
结合 CloudFront 上下游性能访问 CloudFront 的处理时间信息来监控性能瓶颈。

检测性能问题

网站的性能主要依赖于延迟,延迟是指用户行为(如点击链接或提交表单)与服务器响应之间的时间延迟。对网站而言,延迟通常以首次字节时间(TTFB)的形式进行测量,它衡量网站内容开始渲染到用户屏幕上的迅速程度,直接影响

信号如首次内容绘制(FCP)和最大内容绘制(LCP)。为了确保无缝的用户体验,建议将 TTFB 保持在 800毫秒或以下。这个基准可以作为识别缓慢请求的有用阈值。使用 可有助于提升静态和动态内容的 TTFB。

在客户端视角下评估 TTFB,涵盖从用户请求发起到接收来自服务器的第一个字节的持续时间。这个计算包括网络传输时间和服务器端所有处理时间,这可能涉及内容交付网络(CDN)操作、原始网络服务器功能、数据库查询和其他请求处理任务。服务器中的 TTFB 反映服务器接收请求与向网络层发送第一个字节响应之间的间隔。

在典型的网站架构中,包括 CloudFront 及其边缘功能、应用程序负载均衡器、Web 服务器和数据库,请求响应周期如下图所示。

删除)

TTFB 计算

通过记录请求的不同时间戳,可以计算多个 TTFB,如下所示:

  • 用户 TTFB :用户体验监测时应测量 T1 到 T18 的时间间隔,短的 TTFB 表示更快的响应交付。
  • CloudFront 下游 TTFB :在 T2 到 T17 的时间间隔内,处理请求的时间。
  • CloudFront 上游 TTFB :在 T3 到 T14 的时间间隔,代表 CloudFront 向源发送请求并从中接收响应。

使用 JavaScript 测量 TTFB

你可以使用 JavaScript 的 在浏览器中测量用户 TTFB。这项 API让你能够获得加载资源过程中的各个阶段的时间戳,包括请求开始时间、DNS 解析时间、TCP 和 TLS 握手,以及接收第一个字节响应的时间。


new PerformanceObserver((entryList) => { const entries =
entryList.getEntries();

entries.forEach(entry => { if (entry.responseStart > 0) { timings.userDNS =
(entry.domainLookupEnd - entry.domainLookupStart).toFixed(2); timings.userTCP
= (entry.connectEnd - entry.connectStart).toFixed(2); timings.userTLS =
(entry.requestStart - entry.secureConnectionStart).toFixed(2);
timings.userTTFB = (entry.responseStart - entry.requestStart).toFixed(2); }
}); }).observe({ type: 'resource', buffered: true }); ```

在此代码段中,获取到的 DNS、TCP、TLS 和 TTFB 的时间数据可帮助分析请求的延迟,并优化用户体验。

## 实现 Server-Timing

任何 Web 服务器都可以在 HTTP 响应中添加 Server-Timing 头信息,提供服务器性能指标。这一头部支持所有现代浏览器,允许通过
 接口轻松解析和检索指标值。CloudFront 已支持 Server-
Timing,通信一些处理相关的指标。例如,先前描述的 CloudFront 下游 TTFB 为 cdn-downstream-fbl 指标,而
CloudFront 上游 TTFB 则是 cdn-upstream-fbl。

### 启用 Server-Timing

要在 CloudFront 中激活 Server-Timing,需创建响应头策略并在 Server-Timing头部面板中切换“启用”选项,同时指定采样率。

创建的 Server-Timing 头部可以提供 CloudFront 请求处理的性能监视,快速定位可能出现的问题。

## 与 Amazon CloudWatch 分析

将 Server-Timing 头信息融入现有的数据监控解决方案,如 Amazon CloudWatch RUM,能够更全面地监控网站的性能。例如,可以创建
 来捕获来自 Server-Timing 头部提取的指标,并将其发送至
CloudWatch。这样可方便地分析和监测性能数据。

## 结论

本文探索了 TTFB 对网站性能监测的重要性,并演示了如何使用 Server-Timing头部有效获取请求响应周期的详细信息。通过测量延迟并获取服务器性能指标,网站所有者可以迅速定位性能问题的根本原因并采取措施优化网站。

如需更多关于优化你的网站和 API 的知识,欢迎访问  的

部分。

## 关于作者

![Yury删除)

### Yury Yakubov

Yury是一名边缘专业解决方案架构师,在内容交付行业有超过十五年的经验,专注于性能、安全性和可观察性。他热衷于帮助客户构建复杂任务的有效解决方案。在工作之余,他喜欢与家人共度时光,阅读书籍或玩经典电子游戏。

Leave a Reply

Required fields are marked *