两类错误的代价不对称
DEV-sampler.md §四 · 这是定阈值的第一原则
| error错误类型 | what happens后果 | severity严重性 |
|---|---|---|
| 误判:SSR 当 CSR | 只浪费渲染成本,页面照样能抓到 | 可承受 |
| 漏判:CSR 当 SSR | 永久丢内容 —— 调度器会丢弃该域名后续链接,它再也不会被抓 | 不可逆 |
阈值必须偏向「宁可多抓」。这个取舍已经写进了字段类型:verdict 是枚举不是布尔,就是为了不让 partial 坍缩成 falsy 被当 SSR 丢掉 —— 而 partial 恰是分歧极大、最不该静默丢的那批。
标定方法
DEV-sampler.md §十 · 四语种各抽 200 个域名,人工标注
| step步骤 | action动作 |
|---|---|
| 1 | 四语种各抽 200 个域名 |
| 2 | 人工标注真实 verdict |
| 3 | 跑判定,得出 text_ratio 与 link_ratio 的分布 |
| 4 | 按分布定阈值,按语种分别标定 |
- 产出
- 4 组阈值
- miss rate target漏判率目标
- < 5%
- 当前进度
- 2 / 4 语种
- 骨架特征命中率
- 待测
⚠️ 按语种分别标定,不能共用一组阈值 —— 不同语种正文密度与模板习惯不同。中文正文字符密度远高于英文,同一个 text_ratio 在两个语种里含义不同。
⚠️ 这套标定同时是调度器 §9.4 里 text_length 极低阈值的基线。两处共用一套语种基线,不另起一套 —— 两套基线会在同一现象上给出不同结论。
四值判定条件
DEV-sampler.md §四 · 阈值标定前只有定性描述
| verdict判定结论 | condition条件 | threshold阈值 |
|---|---|---|
| csr | 两项显著偏低 | 待标定 |
| ssr | 两项都接近 1 | 待标定 |
| partial | 之间,或样本间分歧极大 | 待标定 |
| unknown | 判定失败:站点挂了、样本全 404、render 持续 429、任务超时 | 不依赖阈值 |
⚠️ 「两项」指 text_ratio 与 link_ratio,都是越低越 CSR,反直觉。text_ratio = raw_text_length / text_length,分母为 0 时取 null 而不是 0 —— 空页面上就会遇到 text_length = 0。
⚠️ unknown 这一行不依赖阈值,所以它不受标定进度阻塞。判定失败照常回调、照常写 domain_rule、照常进待定池。
骨架特征:只用于加速
DEV-sampler.md §四 · should_render = false 的结果满足任一即可跳过渲染
| feature特征 | hit rate命中率 |
|---|---|
| 正文极短但 HTML 体积很大 | 待测 |
<div id="root|app|__next"> 内部为空 | 待测 |
有 __NEXT_DATA__ / window.__NUXT__ 但 DOM 无正文 | 待测 |
⚠️ 只用于加速,不用于否定。不满足特征的域名仍走完整判定。把它当否定条件用,就把一个省钱的优化变成了漏判来源 —— 而漏判是永久丢内容。
样本量验证
DEV-sampler.md §十 · 每多采一页就多一次渲染成本
| page_sample_count采样页数 | purpose用途 | state状态 |
|---|---|---|
| 1 | 对照组,只取首页的情形 | 待测 |
| 3 | 中位数最少可算的样本量 | 待测 |
| 5 | 当前默认 | 在用 |
| 10 | 上限对照,看结论是否已收敛 | 待测 |
⚠️ page_sample_count 是「这个域名采了几页」,是渲染成本单位;调度器的 statistic_sample_count 是「滑动中位数里有几条样本」,是统计窗口宽度。两者曾被合并成同一个 sample_count —— 合并后本页的调优会被误读成统计精度问题。
⚠️ 只取首页会误判:很多站首页是 SSR(为了 SEO 和首屏),内容页才是 CSR。所以 page_sample_count = 1 只是兜底,置信度低,不能作为默认。
语种识别的两个已知难点
DEV-sampler.md §五 · 语种识别在本服务完成,下载器只透传
| case情形 | why hard难在哪 | approach做法 |
|---|---|---|
| zh-Hans / zh-Hant | 不能靠 TLD 判断。.com 上大量繁体站,.tw 上也有简体 |
必须做繁简特有字符频次统计 |
| ja | 纯汉字的日语页面易误判为中文 | 有平假名 / 片假名即判 ja;否则结合 lang 属性 |
⚠️ 识别顺序:<html lang="…"> → HTTP content_language → 内容统计检测。前两者是外部标准名,照抄拼写,不展开为 language。
⚠️ region → jurisdiction 每个法域一个独立取值,不做合并。TW / HK / MO 各自独立,不并入 CN。技术层只负责如实标注,合并与否是下游策略层的决定 —— 字段合并了就再也拆不开。