跳到主要内容

《林一的 Cloudflare 通关记》第 14 篇-上线前的"体检报告"——Analytics 与性能监控

· 阅读需 12 分钟

《林一的 Cloudflare 通关记》第 14 篇

"明天上线?"老张问。

"嗯!"林一摩拳擦掌。

"那先看看你的体检报告。"

"什么体检?我上周刚体检过,指标都正常——"

故事引入​

"说你的网站。"老张打开 Cloudflare Dashboard,点进 Analytics 面板,"你的网站跑得快不快?哪里慢?有多少人访问?有没有出错?这些你知道吗?"

林一看了看满屏的图表和数字,一脸茫然。

"不知道……"

"上线前不看数据,那叫蒙眼狂奔。"老张拉了把椅子坐下,"来,逐项给你讲。"


技术讲解​

Cloudflare Analytics 的四大维度​

老张在白板上画了个四宫格:

┌─────────────┬─────────────┐
│ 流量分析 │ 安全分析 │
│ Traffic │ Security │
├─────────────┼─────────────┤
│ 性能分析 │ DNS 分析 │
│ Performance │ DNS │
└─────────────┴─────────────┘

"Cloudflare 的 Analytics 分四个维度——流量、安全、性能、DNS。前三个是你最需要关注的。"

Cloudflare Analytics 的四大维度

1. 流量分析(Traffic)​

"流量分析回答的基本问题是:有多少人来、从哪来、看什么。"

指标含义
Requests(请求数)所有 HTTP 请求总数
Bandwidth(带宽)传输的数据总量
Unique Visitors(独立访客)去重后的访客数
Threats(威胁数)被安全系统拦截的请求数
Page Views(页面浏览)页面被加载的次数

"这些数据不需要你装任何代码——只要你的域名开了 Cloudflare 代理(Proxied 模式),流量经过 Cloudflare 的边缘节点,就自动统计了。"

"就像高速路口的摄像头?"

"对,过路就拍照,不需要你额外装东西。"

2. 安全分析(Security)​

"安全分析展示你的网站被攻击的情况——这个我们在第 11 篇 WAF 那篇看过。"

指标含义
Threats blocked被拦截的威胁数
Threat type威胁类型分布(SQL注入、XSS、CC等)
Top countries攻击来源国家
Top IPs攻击最多的 IP
Action takenWAF 的处理动作(Block/Challenge/Log)

"上线前看一眼安全面板——如果已经有攻击被拦截了,说明 WAF 在正常工作。如果一条拦截都没有……可能你的 WAF 配错了。"

3. 性能分析(Performance)​

"这个最关键——你的网站到底快不快。"

"快不快我自己访问一下不就知道了?"林一不以为然。

"你访问快不代表用户访问快——你在公司网络里,离 Cloudflare 节点可能就几十毫秒。但用户在新疆、在海南、在国外呢?"

"说得对……"

"所以需要 RUM。"


Real User Monitoring——真实用户监控​

"RUM(Real User Monitoring)就是'真实用户监控'——在你的网页里嵌一小段 JS 代码,每个真实用户访问你的网站时,浏览器会自动采集性能数据发回 Cloudflare。你看到的是真实用户在不同地点、不同设备、不同网络下的实际体验。"。"

真实用户监控 RUM

"跟 Google Analytics 一样?"

"不完全一样。"老张画了张对比表:

Cloudflare Web Analytics vs Google Analytics

Cloudflare Web AnalyticsGoogle Analytics
Cookie不使用 Cookie使用 Cookie 追踪用户
用户追踪不追踪个人用户跨站追踪用户行为
隐私合规GDPR 友好,无需 Cookie 横幅需要用户同意才能使用
数据归属你的数据,不用于广告数据可能用于广告投放
性能指标Core Web Vitals + TTFB主要偏流量分析
费用免费免费(但有数据采样限制)

"最大的区别是——Cloudflare Web Analytics 不使用 Cookie,不追踪个人用户。它统计的是聚合数据:有多少人访问、页面加载花了多久、从哪个国家来的。但不会告诉你'张三昨天看了5个页面,在第3个页面停留了120秒'。"

"那它不是不如 GA 功能多?"

"看需求。如果你要分析用户行为路径、转化漏斗、A/B 测试——那确实需要 GA。但如果你只是想知道'网站快不快、有没有人来看、哪里卡了'——Cloudflare Web Analytics 够了,而且不用操心隐私合规。"

国内类比:类似百度统计的轻量版,但比百度统计更注重隐私。如果你的用户群对隐私敏感(比如海外用户),Cloudflare Web Analytics 是更安全的选择。


Core Web Vitals——网站性能的核心指标​

"性能分析里最重要的就是 Core Web Vitals——Google 定义的一组'用户体验核心指标'。直接影响搜索排名。"

Core Web Vitals 四大指标

老张在白板上画了张表:

指标全称含义好的标准差的
TTFBTime to First Byte首字节时间——从发请求到收到第一个字节< 800ms> 1800ms
LCPLargest Contentful Paint最大内容渲染——页面主要内容渲染完成< 2.5s> 4s
INPInteraction to Next Paint交互到下次渲染——用户点击后到页面响应< 200ms> 500ms
CLSCumulative Layout Shift累计布局偏移——页面元素跳来跳去的程度< 0.1> 0.25

"逐个解释。"

TTFB——首字节时间​

"从用户发出请求到收到服务器第一个字节的时间。这个指标反映的是服务器响应速度。"

"对 Cloudflare 用户来说,TTFB 通常很好——因为 CDN 在边缘节点缓存了内容,用户请求根本不到源服务器。"

"但如果你的 Worker 要查 D1 数据库再返回结果呢?"

"那就慢了?"

"不一定。Cloudflare 的边缘节点到 D1 的延迟通常在 50ms 以内。但如果你的 Worker 写了5个串行数据库查询……"

"那我改成并行。"

"孺子可教。"

LCP——最大内容渲染​

"页面'看起来加载完了'的时间。通常是你页面里最大的那个元素——比如一张 banner 图、一段大标题——渲染完成的时间。"

"这个主要看前端优化吧?图片大小、字体加载……"

"对。在 Cloudflare 这边能做的优化:CDN 缓存图片和静态资源(第 3 篇),Pages 自动部署到全球 CDN(第 4 篇)。剩下的看你的前端代码质量。"

INP——交互到下次渲染​

"INP 是 2024 年 3 月替代 FID(First Input Delay)的新指标。FID 只测第一次交互的延迟,INP 测所有交互的延迟——更严格。"

"什么算'交互'?"

"点击按钮、输入文字、滚动页面……用户做了任何操作到页面给出视觉反馈的时间。如果你的前端 JS 特别重,用户点了按钮要等半秒页面才有反应——INP 就差了。"

CLS——累计布局偏移​

"这个最好理解——你打开一个网页,正要点某个按钮,结果页面突然跳了一下,你点到了别的地方。这就是 CLS。"

"最烦这种了!"小王凑过来说,"我昨天看新闻,广告加载完页面跳了一下,我不小心点了广告。"

"CLS 的常见原因:图片没设宽高、字体加载导致文字重排、动态插入的内容把已有元素挤走。优化方法:给图片设 width 和 height、给广告位预留空间、用 transform 代替 top/left 做动画。"


Workers Analytics​

"除了网站性能,你的 Worker API 也需要监控。"

在 Cloudflare Dashboard → Workers & Pages → 选你的 Worker → Metrics 标签:

指标含义
RequestsWorker 被调用的总次数
CPU Time消耗的 CPU 时间(注意不是执行时间)
Errors失败的请求数和错误率
Success Rate成功率
Duration请求处理总时长

"注意区分 CPU Time 和 Duration——CPU Time 是你的代码实际占 CPU 的时间,Duration 是从请求进入到响应返回的总时间。如果你的 Worker 里调了外部 API(比如 Workers AI),等待 API 响应的时间算在 Duration 里,但不算 CPU Time。"

CPU Time vs Duration

"免费版 CPU 时间限制多少来着?"

"10ms/请求。但 Duration 没限制——你 await 等外部 API 响应等 5 秒都不算 CPU 时间。"

"那 Workers AI 的调用等待不算 CPU?"

"不算。所以你不用担心调 AI 把 CPU 时间用超了。"


实操指导​

第一步:启用 Web Analytics​

"你的前端是 Cloudflare Pages 部署的(第 4 篇),启用 Web Analytics 一键搞定。"

方式一:Pages 自动集成(推荐)​

  1. 进入 Dashboard → Workers & Pages
  2. 选你的 Pages 项目
  3. 点击 Metrics 标签
  4. 找到 Web Analytics 区域,点击 Enable

"Cloudflare 会在下次部署时自动把 Analytics 的 JS beacon 注入到你的页面里。你什么都不用改。"

方式二:通过 Web Analytics 页面​

如果你的站点不是 Pages 部署的,或者想单独管理:

  1. 进入 Dashboard → Web Analytics
  2. 点击 Add a site
  3. 如果域名已代理在 Cloudflare 上——选 Automatic Mode,自动注入 beacon,不需要改代码
  4. 如果域名没在 Cloudflare 上——选 Manual Mode,复制 JS 代码贴到你的 HTML <body> 标签前
<!-- Cloudflare Web Analytics -->
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
data-cf-beacon='{"token": "你的token"}'></script>

"Automatic Mode 是什么原理?"林一问。

"因为你域名开了 Cloudflare 代理,Cloudflare 在边缘节点响应请求时,自动在你的 HTML 里注入这段 JS。你完全不用改代码。"

"又是一个域名托管在 Cloudflare 的好处?"

"你开始悟了。"


第二步:查看 Web Analytics 数据​

启用后等几分钟,数据就出来了。在 Web Analytics 页面能看到:

维度数据
Page Views页面浏览量
Visits访问次数(同一用户 30 分钟内多次访问算一次)
Visitors独立访客数(基于 IP 去重,不用 Cookie)
Top Countries访客来源国家
Top Paths访问最多的页面路径
Top Referrers流量来源(从哪个网站链接过来的)
Core Web VitalsTTFB、LCP、INP、CLS 的分布

"重点看 Core Web Vitals 的分布,"老张指着一张饼图,"Google 认为 LCP < 2.5s 是'好',2.5-4s 是'需要改进',> 4s 是'差'。如果你大部分访问的 LCP 在'好'的范围——没问题。如果一堆在'差'——得优化了。"


第三步:查看 Zone 级 Analytics​

"除了 Web Analytics,Dashboard 上还有 Zone 级别的分析——涵盖流量、安全、性能、DNS。"

  1. 进入 Dashboard → 选你的域名 → Analytics & Logs

Traffic 标签:

  • 请求量趋势图(按时间)
  • 带宽使用量
  • 缓存命中率(Cache Ratio)——这个重要!
  • 独立访客数

"缓存命中率是什么?"

"CDN 缓存命中率——有多少请求是直接从边缘节点缓存返回的,不需要回源。命中率越高,网站越快,源服务器压力越小。"

"多少算高?"

"静态资源为主的网站,命中率应该 90% 以上。如果你只有 50%——说明你的 Cache Rules(第 3 篇)没配好,很多东西没缓存。"

Security 标签:

  • 被拦截的威胁数趋势
  • 威胁类型分布
  • 攻击来源 Top 10

Performance 标签:

  • TTFB 分布
  • 缓存命中率
  • 各边缘节点的性能数据

第四步:设置告警​

"上线后你不可能 24 小时盯着 Dashboard。设置告警,出问题自动通知你。"

告警通知流程

  1. 进入 Dashboard → 选域名 → Notifications
  2. 点击 Add notification

可以配置的告警类型:

告警类型触发条件推荐用途
DDoS Attack检测到 DDoS 攻击必须——攻击时第一时间知道
HTTP Rate Limit速率限制被触发防暴力破解告警
WAF Custom Rule自定义规则被触发监控特定攻击
Origin Error源服务器 5xx 错误源站出问题告警
Worker ErrorWorker 异常API 出错告警

"每个告警可以发邮件或 Webhook。如果你用 Slack/钉钉/飞书,配一个 Webhook 到群机器人,告警直接推到群里。"


小结与预告​

本篇知识点回顾​

知识点要点
Analytics 四维度流量、安全、性能、DNS
Web Analytics隐私友好(不用 Cookie)、免费、GDPR 合规
Web Analytics vs GACW 侧重性能和隐私,GA 侧重用户行为分析
Core Web VitalsTTFB(服务器响应)、LCP(内容渲染)、INP(交互响应)、CLS(布局稳定)
INP 替代 FID2024年3月起,INP 成为新的交互指标,比 FID 更严格
缓存命中率衡量 CDN 效果的关键指标,90%+ 为佳
Workers AnalyticsCPU Time ≠ Duration,等待外部 API 不算 CPU 时间
告警DDoS、WAF、源站错误等告警,支持邮件和 Webhook

动手挑战​

基础挑战:为你的 Pages 站点启用 Web Analytics,等待 30 分钟后查看数据。找到 Core Web Vitals 面板,记录你的 TTFB 和 LCP 的分布——多少比例是"好"、多少是"需要改进"?

进阶挑战:配置一个 Webhook 告警——当 WAF 自定义规则被触发时,推送到你的飞书/钉钉/Slack 群。提示:

  1. 在群设置里添加一个 Incoming Webhook 机器人,拿到 Webhook URL
  2. 在 Cloudflare Notifications 里添加 WAF Custom Rule 告警
  3. Webhook URL 填你的群机器人地址
  4. 触发一次 WAF 规则(比如用 curl 发一个带 SQL 注入特征的请求),确认告警推送到群里

思考题:如果你的缓存命中率只有 60%,可能是什么原因?你会怎么排查?(提示:检查 Cache Rules 配置——是不是有些应该缓存的资源类型没被覆盖?是不是有些资源的 Cache-Control 头设了 no-cache?用 Cloudflare 的 Cache Analytics 看哪些 URL 没命中缓存。)

下回预告​

林一把 Analytics 面板从头到尾过了一遍,缓存命中率 94%,LCP 平均 1.2 秒,没有异常错误。

"张哥,体检报告——各项指标正常。"

"那就准备上线吧。"老张站起来拍了拍他的肩膀,"明天就是上线日。"

林一突然有点紧张。

"怕什么?DNS、SSL、CDN、Pages、Workers、AI、R2、KV、D1、Turnstile、WAF、Access、Email、Analytics——你全过了一遍。明天就是把所有东西串起来检查一遍。"

"那……如果上线出问题呢?"

"出问题就用你学的东西解决。你已经准备好了。"

下篇预告:《正式上线!林一的"毕业典礼"——全链路复盘与成长总结》

wp