← 首页 · 工具库

Measurement · 可复现实测

云枢实测记录:34 个工具的耗时与页面体积

本页每一个数字,都是 2026-10-19 在本站生产服务器上现场跑出来的。命令与原始输出一并给出——照抄第 6 节的命令,你能得到相近的结果(为什么是「相近」,见第 7 节)。

采集时间 2026-10-19 06:26–06:43(+08:00) 巡检快照 34 / 34 在线 采集方式 curl + toolbox-uptime 工具数 34

01本页是什么

一句话:这是一份可复现的实测记录,不是评测文章。没有「我在高铁上试了一下」这类无法验证的叙事,只有命令、输出和判断依据。

三条规矩:只写命令跑出来的数字;拿不到的写「未测」并说明原因;页面文案与实测冲突时,以实测为准——第 4 节就是一处冲突的更正,我们没有把它藏起来。

数据源:/var/lib/toolbox/uptime-latest.json(巡检程序每 5 分钟覆盖的一次快照)与现场 curl。采集环境:Ubuntu 生产服务器(47.114.58.205)上的 loopback 到公网域名;体积复核在第二个源 IP 上用 curl 8.9.1 完成。

34 / 34工具在线(巡检 HTTP 200)
74 ms响应耗时中位数
74.26 ms响应耗时均值
6,005 B工具路径页平均体积
1.67 MiB/directory/(实测最大页面)
034 页中 JS 网络请求总数

0234 个工具的响应耗时

巡检程序 /opt/toolbox/bin/uptime -dir /var/lib/toolbox -timeout 6s 由 toolbox-uptime.timer 每 5 分钟触发一次,对 34 个子域的 / 各发一次 HTTPS 请求,记录往返毫秒。下表按耗时升序排列。

快照 checked_at = 2026-10-19T06:41:16+08:00 · 采集到 34 条 · 在线 34/34 · 最快 60 ms(Markdown 预览)· 最慢 87 ms(Cron 解析)· 中位 74 ms · 均值 74.26 ms · 合计 2,525 ms

#工具域名状态耗时(ms)
1. Markdown 预览最快md.yomzoo.com20060
2. 时间戳转换ts.yomzoo.com20064
3. HTTP 安全头headers.yomzoo.com20065
4. 进制转换base.yomzoo.com20065
5. 颜色对比度color.yomzoo.com20067
6. 表格转换table.yomzoo.com20067
7. JSON → YAMLyaml.yomzoo.com20067
8. 更新日志生成changelog.yomzoo.com20067
9. 密码生成pass.yomzoo.com20068
10. 文本统计text.yomzoo.com20068
11. JSON 路径jsonpath.yomzoo.com20068
12. 子网掩码计算subnet.yomzoo.com20068
13. 正则测试regex.yomzoo.com20071
14. JSON ↔ CSVcsv.yomzoo.com20072
15. 时区转换tz.yomzoo.com20072
16. JSON 格式化json.yomzoo.com20072
17. 单位换算unit.yomzoo.com20074
18. JWT 验签jwt.yomzoo.com20074
19. UUID / ULIDid.yomzoo.com20075
20. AI 爬虫防护bot.yomzoo.com20077
21. 图片转换image.yomzoo.com20077
22. 文本对比diff.yomzoo.com20077
23. UA 解析ua.yomzoo.com20077
24. 哈希计算hash.yomzoo.com20078
25. 无障碍合规检测a11y.yomzoo.com20081
26. SSL 证书检查ssl.yomzoo.com20083
27. URL 解析url.yomzoo.com20083
28. JSON → 代码codegen.yomzoo.com20083
29. Cron 反查cronfind.yomzoo.com20083
30. 编解码codec.yomzoo.com20083
31. 颜色与色阶palette.yomzoo.com20084
32. 图片 Data URIdatauri.yomzoo.com20084
33. 文本行处理lines.yomzoo.com20084
34. Cron 解析最慢cron.yomzoo.com20087
读法:这是服务器 → 自己域名的往返(含 DNS、TLS、nginx 与 toolbox 的处理),不是终端用户感知耗时,也不含你所在网络的链路。34 个值落在 60–87 ms 之间,极差 27 ms。

2.1 三轮巡检的波动(为什么单轮不能当排名)

同一批工具、同一台服务器,相隔 5–15 分钟的三轮巡检,数字差得很多。这不是测错,是单次探测的固有噪声——所以我们把每轮都当快照记录,不做「谁比谁快」的排名。

快照 checked_at最快中位均值最慢
2026-10-19T06:26:19+08:0083 ms151 ms144.62 ms188 ms
2026-10-19T06:36:19+08:0051 ms99 ms91.71 ms107 ms
2026-10-19T06:41:16+08:00本页快照60 ms74 ms74.26 ms87 ms
三轮的最慢值 188 → 107 → 87 ms,相差 2.2 倍。结论:单轮数字只能用来发现「异常慢」的工具,不能用来给工具排名,也不能拿来宣传「我们比谁快」。真要比较,需要多轮采样 + 分位数,我们还没做到那一步(见第 7 节)。

03页面体积

体积是响应体字节数(curl 的 %{size_download},请求未带 Accept-Encoding,即未压缩 HTML)。同时给一列 gzip 传输字节,因为浏览器实际收到的是压缩后的。

3.1 关键页面

路径HTML 体积gzip 传输响应耗时(3 次中位)文件 mtime
/133,28926,7750.041 s2026-10-19 06:39:32
/tools.html284,49841,0730.320 s2026-10-19 06:35:39
/news.html36,4807,8220.034 s2026-10-19 06:39:38
/directory/1,750,038124,7192.676 s2026-10-19 06:35:38

/directory/ 是四个页面里唯一超过 1 MB 的:1,750,038 B(1.67 MiB),gzip 后仍有 124,719 B,是体积上的主要异常点。
/tools.html 三次耗时分别是 0.041 / 0.320 / 0.515 s,呈双峰,表中取中位数 0.320 s——如实列出分布,避免只给一个好看的数字。
首页与资讯页由部署/定时脚本重建(上表 mtime 就是构建时刻);你复跑时若数字已变,多半是又重建过——这是体积随时间变化的正常现象,不是测错。

3.2 34 个工具路径页

/tools/<slug>/ 不是磁盘上的文件:nginx 用 proxy_pass http://127.0.0.1:8791/ 把它反代给 toolbox,并按 Host 头选工具。所以这里测的是该 URL 的真实响应体。

合计 204,179 B · 平均 6,005 B · 最大 时区转换(9,602 B) · 最小 无障碍合规检测(4,682 B) · 前 5 大:时区转换 9,602 B · 子网掩码计算 9,582 B · 更新日志生成 8,801 B · 颜色与色阶 8,691 B · AI 爬虫防护 6,925 B

工具路径HTML 体积gzip 传输
时区转换前 5 大/tools/tz/9,6023,207
子网掩码计算前 5 大/tools/subnet/9,5823,580
更新日志生成前 5 大/tools/changelog/8,8013,399
颜色与色阶前 5 大/tools/palette/8,6912,797
AI 爬虫防护前 5 大/tools/bot/6,9252,786
文本行处理/tools/lines/6,5272,579
单位换算/tools/unit/6,5202,503
JSON 格式化/tools/json/6,0602,538
图片转换/tools/image/6,0432,444
文本对比/tools/diff/6,0392,448
密码生成/tools/pass/5,9622,419
文本统计/tools/text/5,9162,481
表格转换/tools/table/5,7282,374
UA 解析/tools/ua/5,7252,531
JSON 路径/tools/jsonpath/5,6962,485
JSON → YAML/tools/yaml/5,6922,537
编解码/tools/codec/5,6482,385
哈希计算/tools/hash/5,6462,449
UUID / ULID/tools/id/5,5132,357
JSON ↔ CSV/tools/csv/5,5062,396
正则测试/tools/regex/5,5022,408
JSON → 代码/tools/codegen/5,4762,424
进制转换/tools/base/5,3422,303
JWT 验签/tools/jwt/5,2562,378
颜色对比度/tools/color/5,2492,286
图片 Data URI/tools/datauri/5,1652,323
Markdown 预览/tools/md/5,1572,317
HTTP 安全头/tools/headers/5,1362,321
Cron 反查/tools/cronfind/5,1252,313
URL 解析/tools/url/5,1132,306
Cron 解析/tools/cron/5,0932,263
时间戳转换/tools/ts/5,0392,221
SSL 证书检查/tools/ssl/5,0222,225
无障碍合规检测最小/tools/a11y/4,6821,887
一个必须写出来的坑:工具箱对「GET 就出结果」的页面有每 IP 每小时 30 次的计算配额。连测太密时,tz、palette、ua 这三页会把结果区换成限流提示,页面随之变小(实测 tz 从 9,602 B 掉到 6,585 B)。上表取的是未限流时的完整页面,并在第二个源 IP 上复核一致(tz 9,602 / palette 8,691 / ua 5,725 B,三次一致)。

04「零上传」核查:grep 为 0,但不等于没有上传

站内此前的文案写过「全部本地计算、不联网」。我们按可复跑的方式核对,结论和文案不一致,因此如实更正。

4.1 三条命令的结果

检查项结果怎么测的
JS 发起的网络请求
fetch / XMLHttpRequest / sendBeacon
34 页全部为 0grep -cE 'fetch\(|XMLHttpRequest|navigator.sendBeacon'
外链脚本 <script src=>34 页全部为 0grep -c '<script src='
计算型内联 JS没有:32 页只有一个 341 B 的「填入示例」脚本;changelog 892 B(多一个复制按钮);a11y 0 B逐块提取 <script> 并统计,搜索 crypto.subtle / TextEncoder / btoa / JSON.parse 等关键词均无命中
原生表单34 / 34 都有(method="post" 或 method="get")grep -o '<form[^>]*>'
Set-Cookie0(抽查 json / hash / text / codec)curl -D - 看响应头
localStorage / sessionStorage0 处(同上 4 页)grep -cE 'localStorage|sessionStorage'

4.2 关键反证:curl 不执行 JS,却拿到了正确的哈希

如果计算真在浏览器里,那么用 curl 直接 POST(curl 不执行任何 JavaScript)应该拿不到结果。实测拿到了:

# 请求体只有 17 字节
$ curl -s -X POST --data-urlencode "input=abc" --data-urlencode "alg=all" \
    https://www.yomzoo.com/tools/hash/

# 返回的 HTML 里(HTTP 200,8,737 B,0.053713 s):
MD5      900150983cd24fb0d6963f7d28e17f72
SHA-256  ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

这两个值与标准测试向量一致。curl 不会跑页面里的脚本,所以它们只可能是服务端算出来的。

结论:这个说法不成立,我们更正

grep 为 0 只证明「页面没有用 JS 发请求」,不证明「没有上传」。这 34 个工具的真实工作方式是:浏览器把输入以原生表单 POST 到本站服务器,由服务端计算后把结果渲染回 HTML。

因此「零上传」不成立,「断网也能用」更不成立——断网时表单提交不出去,工具不能工作。我们不写这种无法复现的话。

能确认的隐私事实是另外几条:不加载任何第三方脚本(34/34 外链脚本为 0)、不设 Cookie(抽查 0)、不用 localStorage/sessionStorage(抽查 0 处),输入只经 HTTPS 提交到本站服务器。「输入是否落盘、日志是否记录内容」无法从外部验证,列入第 7 节未测项。

4.3 对照:站内确实有纯前端的地方

不是「一律服务端」:/directory/(收录目录)的筛选就是纯前端——实测该页 fetch/XHR 计数为 0,内联脚本里有 addEventListener("input") 与对 .ai-dir-item 的 querySelectorAll 过滤,输入只用来隐藏/显示已随页面下发的条目。

区别在于数据量级与计算位置:目录筛选是在已下载的 DOM 上做过滤,而 34 个工具的计算由服务端完成。我们这次没有找到可与之对照的「纯前端工具」——34 个页面里没有任何一段计算型 JS(4.1 第 3 行)。

05大输入处理

用站内真实文件当输入,POST 到两个工具,记录提交量、服务端耗时与结果是否完整。完整性判据不用「看着像」,而是拿工具自己输出的「字符数 / 字节数」与 wc 独立比对。

用例输入提交字节响应字节耗时完整性
文本统计
/tools/text/
sitemap.xml
64,398 B / 2,205 行
91,54392,8870.082 s字符数 64,398 = wc -c ✓
文本统计
/tools/text/
sitemap × 8
515,184 B / 17,640 行
732,239698,1131.372 s字符数 515,184 = 8 × 64,398 ✓
JSON 格式化
/tools/json/
367 个 URL 的 JSON
18,811 B
26,11349,9890.051 s字节数 in 18,811 = out 18,811 ✓
两个必须解释的数字:提交字节大于文件字节,因为表单是 application/x-www-form-urlencoded,XML/JSON 里的 < > " / 和换行被百分号编码,体积会涨;耗时含回显,服务端把输入原样写回 textarea,所以响应字节也大。这三条都是「含传输的端到端耗时」,不是纯计算耗时。

未测:超过 515 KB 的输入、并发与压测、非法/畸形输入的报错路径。原因见第 7 节。

06怎么自己复现

下面的命令就是本页实际用的。在你自己的机器上跑,数字会因网络位置、时间点而不同——重点是量级与结论应当一致。注意 B 段不要连跑太多遍,会踩到第 3.2 节那个每小时 30 次的限流。

A · 工具耗时

# A. 巡检快照(每 5 分钟被覆盖一次)
cat /var/lib/toolbox/uptime-latest.json
curl -s 'http://127.0.0.1:8791/status?format=json'

# 按耗时排序并汇总
python3 - <<'PY'
import json
d = json.load(open('/var/lib/toolbox/uptime-latest.json'))
rs = sorted(d['results'], key=lambda x: x['ms'])
ms = [r['ms'] for r in rs]
print(d['checked_at'], 'up', d['up'], 'total', d['total'], 'n', len(rs))
print('min', min(ms), 'max', max(ms),
      'avg', round(sum(ms) / len(ms), 2),
      'median', sorted(ms)[len(ms) // 2])
for r in rs:
    print(r['ms'], r['name'], r['domain'], r['status'])
PY

B · 工具路径页体积

# B. 34 个工具路径页体积(第二列是 gzip 传输字节)
for s in a11y ssl pass bot headers color palette hash url image datauri text md \
         csv base unit diff codegen cronfind table yaml lines cron jwt ts tz id \
         json jsonpath regex codec ua changelog subnet; do
  raw=$(curl -s -o /dev/null -w '%{size_download}' "https://www.yomzoo.com/tools/$s/")
  gz=$(curl -s -H 'Accept-Encoding: gzip' -o /dev/null \
        -w '%{size_download}' "https://www.yomzoo.com/tools/$s/")
  echo "$s $raw $gz"
done

C · 「零上传」核查

# C. 「零上传」核查
# 1) 页面里有没有 JS 发起的请求
for s in json hash text codec; do
  printf '%s ' "$s"
  curl -s "https://www.yomzoo.com/tools/$s/" \
    | grep -cE 'fetch\(|XMLHttpRequest|navigator.sendBeacon'
done

# 2) 有没有外链脚本、有没有原生表单
curl -s https://www.yomzoo.com/tools/json/ | grep -c '<script src='
curl -s https://www.yomzoo.com/tools/json/ | grep -o '<form[^>]*>'

# 3) 关键反证:curl 不执行 JS,POST 后仍返回正确哈希
curl -s -X POST --data-urlencode "input=abc" --data-urlencode "alg=all" \
  https://www.yomzoo.com/tools/hash/ \
  | grep -o '900150983cd24fb0d6963f7d28e17f72'

D · 大输入处理

# D. 大输入:把站内真实文件当输入
wc -c /www/wwwroot/ai.yomzoo.com/sitemap.xml

curl -s -X POST \
  --data-urlencode "text@/www/wwwroot/ai.yomzoo.com/sitemap.xml" \
  --data-urlencode "style=all" -o /tmp/out.html \
  -w 'upload=%{size_upload} download=%{size_download} total=%{time_total}\n' \
  https://www.yomzoo.com/tools/text/

# 结果里应出现 字符数 64398 与 字节数 64398
grep -oE '<b>[0-9]+</b><span>(字符数|字节数)' /tmp/out.html

E · 关键页面体积

# E. 关键页面体积与耗时(建议跑 3 次取中位数)
for p in / /tools.html /news.html /directory/; do
  for i in 1 2 3; do
    curl -s -o /dev/null \
      -w "$p %{size_download}B %{time_total}s\n" \
      "https://www.yomzoo.com$p"
  done
  curl -s -H 'Accept-Encoding: gzip' -o /dev/null \
    -w "$p gzip %{size_download}B\n" "https://www.yomzoo.com$p"
done

07局限说明