← 返回介绍页 /what/
XK-LAB // 状态页 STATUS ● 打开即体检 · 8 个只读端点

这一页不写结论:打开就把 8 个只读端点逐个打一遍,把 HTTP 状态、耗时、响应字节、PASS/FAIL 一行行贴出来,再摊开构建版本与数据新鲜度。每个数字都写着来源端点,取不到就是「未取到」—— 没有样例值、没有补零、没有缓存外的美图。

端点体检 · 逐个 fetch 实测8 个端点 · GET · 只读

—等待体检…

端点用途HTTP耗时 ms字节判定说明
等待体检…(数据全部由前端 fetch 得到,脚本被禁用时这里不会出现任何数字)

口径:基址来自 <meta name="wb-api">,路径就是表格每一行自己写的; PASS = HTTP 2xx 且响应能解析成 JSON(.js 别名还要求 code=200), FAIL = 其它一切情况(超时、跨源失败、非 JSON、接口自报失败——此时 HTTP/字节可能显示「未取到」)。 耗时 = fetch 发起到响应体读完;字节 = 解码后的 UTF-8 字节数(跨源读不到压缩后传输量)。 接口带 max-age=45s,命中浏览器或边缘缓存时耗时会接近 0ms —— 所以「快」不等于「新」,新不新看下面第 3 块。

构建与发布 · 线上跑的是哪个版本/api/health · /api/public/deploy.js
项目字段(端点)值
构建 SHA/api/health · buildSha未取到
进程已运行/api/health · uptimeMs未取到
健康自述/api/health · status / application / branch未取到
发布目录deploy.js · data.release.release未取到
发布时刻 builtAtdeploy.js · release.builtAt / publishedAt / switchedAt未取到
文件数 filesdeploy.js · release.files / fileCount未取到
总字节 totalBytesdeploy.js · release.totalBytes未取到
最近发布 historydeploy.js · release.history(取最近 3 条)未取到
版本对得上吗health.buildSha vs deploy.build.sha未取到

为什么有的是「未取到」:deploy.js 只端出源站上那份 release 信息里真的写了的键。 线上这份目前没有 files / history,所以那两行固定显示「未取到」而不是编造; builtAt 会按 publishedAt → switchedAt → build.buildTime 的顺序找, 都找不到就照实说。最后一行是两处自述的交叉核对:不一致说明前端与进程不是同一次发布。

数据新鲜度 · 看到的是几秒前的世界/api/public/home.js
项目字段(端点)值
数据时间home.js · data.alerts.generatedAt未取到
缓存秒数home.js · data.alerts.cacheSeconds未取到
距今(本机时钟)页面按 generatedAt 现算(该值不带时区,按浏览者本地时间解析)未取到
服务端快照home.js · snapshotAt / cacheAgeSeconds未取到
响应头 Age本次 home.js 响应的 Age 头(真实年龄 ≈ cacheAgeSeconds + Age)未取到
新鲜度判定age ≤ cacheSeconds + 2 秒容差未取到

判定优先用服务端 snapshotAt(带时区、口径最硬),取不到才退回按 generatedAt 用本机时钟算; 两个都在秒级刷新,所以这行会随时间自己变旧 —— 这正是要你看的:页面上的数字不是硬编码,它在变旧。 接口带 stale-while-revalidate=90:边缘节点回源刷新期间会先把最多约两分钟的旧副本发给你, 所以「偏旧」通常不是接口挂了(刷新一次多半回到「新鲜」);cacheAgeSeconds + Age 就是这份数据的真实年龄。 本机时钟如果比服务端快/慢,会出现负数或整小时级偏差,此时页面写「本机时钟早于服务端…」并不判定,而不是假装新鲜。

你也可以自己敲三条 curl · 只读 · 不写入
# ① 服务是否活着 + 构建 SHA(对应表格第 1 行)
curl -s https://demo.xiaokeqing.cn/api/health

# ② 首页聚合:alerts + geo + honeypot 三合一(对应表格第 2 行)
curl -s https://demo.xiaokeqing.cn/api/public/home.js

# ③ 处置审计:护栏 / 封禁留痕(对应表格第 4 行)
curl -s https://demo.xiaokeqing.cn/api/public/audit.js

同一时刻在你自己的终端敲,数字应该和上面那几张表对得上;对不上,问题就在这里,不是页面修图。 取不到的时候(断网、401、429 限流、源站挂了),本页对应行就显示「未取到」并带上原因: 卡片不填 0,不拿别的时刻的数凑数,也不把旧缓存当新数据 —— 这正是这一页的意义。