直接答案:零请求复用 41 个缓存文章页:32 页有日期,首处日期位置的中位数是第 402.5 个可见字符(约全文 20%);28 页在前 1000 字符内出现,没有一页超过 2000 字符。但4 个 E22 页面的首处日期落在全文 75–82%,靠近页尾;另有 9 页完全没有日期。日期存在不等于一眼能看见。
第 30 期数了“有没有日期”,这一期问位置:日期是不是在标题附近、需要滚动多久才能看到。位置用可见文本字符数做代理,不执行 JS、不做渲染。
方法:按可见文本字符定位
页面来自第 29 期抓取的 41 个 200 页面,原始 HTML 保存在站外。去掉 script、style、注释与标签后得到可见文本,匹配第一个 20xx 数字日期,记录它的字符偏移与全文长度,计算相对位置。中位数按 32 个有日期的页面计算。
| 字段 | 定义 | 边界 |
|---|---|---|
| 首处日期位置 | 可见文本中第一个日期串的字符偏移 | 不是像素,也不是首屏判断 |
| 相对位置 | 偏移 ÷ 可见文本字符数 | 短页面会让比例放大 |
| 分组 | ≤25%、25–50%、50–75%、>75% | 只用于描述分布 |
结果:多数在前 500 字符,4 页在页尾
| 首处日期字符位置 | 页面数 | 说明 |
|---|---|---|
| ≤500 | 18 | 标题或导语附近 |
| 501–1000 | 10 | 正文前段 |
| 1001–2000 | 4 | 正文后段 |
| >2000 | 0 | — |
| 相对位置 | 页面数 | 说明 |
|---|---|---|
| ≤25% | 18 | 靠前 |
| 25–50% | 10 | 中段 |
| 50–75% | 0 | — |
| >75% | 4 | 全部是 E22,靠近页尾 |
中位首处位置是 402.5 个字符、相对位置约 20%。字符数与相对位置的分组不完全对应,因为页面长度差异大:短页面在 400 字符处可能已过半,长页面在 400 字符处仍靠前。
E22:有日期,但日期在页尾
4 个超 75% 的页面全部来自 E22:全文 1,689–2,326 字符,首处日期在 1,277–1,914 字符,落在 75.6%–82.3%。这四页的 JSON-LD 都有 dateModified,但可见日期不在标题附近,更可能在页尾的版权、备案或列表区域。
这说明两件事:“有日期”与“日期在首屏”是不同指标;结构化日期存在,也不代表可见日期位置合理。验收如果要“访客一眼看到更新时间”,必须看位置与渲染,而不只是 grep。
对验收的启示
- 先看位置,再谈可见。 日期在页尾与在标题旁,对访客的意义不同。
- 字符位置只是代理。 真实首屏要看渲染后的像素位置与视口高度。
- 短页面比例会放大。 同样 400 字符,短页可能已过半,长页仍靠前。
- 结构化与可见分开记。 E22 有 JSON-LD 日期,但可见日期在页尾。
- 无日期页面单独列。 9 页没有任何日期串,不能与“日期在页尾”混为一谈。
局限
- 字符不是像素:字号、行高、图片与折叠都会改变真实位置。
- 不执行 JS:脚本注入的日期与懒加载内容看不到。
- 短样本:32 个有日期页面,E22 四页就占满“页尾”组。
- 不区分日期含义:列表、版权、正文日期都算首处日期。
- 41 页 pilot:不外推行业。
数据与复算
匿名数据:equipment-date-position-pilot-2026.csv(41 行:sample_id、URL、可见文本字符数、日期数、首处日期位置、相对位置、分组)。仓库内为 docs/research/2026-11-date-position-pilot.csv。
解析:scripts/date_position_probe.py;单元测试 scripts/test_date_position_probe.py(11 项,无网络)。运行:
python -m unittest scripts.test_date_position_probe
配套:文章页可见日期 pilot(32/41 有日期)、可见日期检查器、文章页更新日期扩样。
数据来源与口径
- 页面缓存:第 29 期 41 个 200 页面,原始 HTML 仅存站外。
- 位置口径:可见文本字符偏移;不渲染、不执行 JS。
- 扫描时间:2026-11-02,零网络请求。