跳到主要内容

难度与性能调优

难度不是越高越好。真正要平衡的是三个量:访客等待、服务端验算耗时、批量请求成本。

两个旋钮​

旋钮影响客户端影响服务端
CAP_CHALLENGE_COUNT线性增加总计算量线性增加验算次数
CAP_CHALLENGE_DIFFICULTY每题期望尝试 ×16 / 档几乎不变(只验算命中答案)

因此想提高攻击成本,优先调难度;想平滑单次耗时,优先调子挑战数量。但两者的乘积决定兑换接口的整体时间。

时间预算​

在无服务器函数里,兑换请求必须在一个固定的时间上限内完成。默认 20 × 3 在缓存路径下约 20 ms 求解,服务端验算远低于上限。

警告

把 MAX_DURATION 当成硬约束:提高参数前先实测最慢设备的求解时间,再确认服务端验算没有逼近上限。参数一旦超出预算,表现不是「慢一点」,而是整批验证请求超时。

推荐起点​

场景建议
一般站点保持默认 20 × 3
移动端占比高降到 12 × 3,观察等待时间
遭受批量刷接口升到 20 × 4,同时加业务限流
低端设备反馈卡顿优先降数量,不要直接降难度到 2

观测什么​

  • 客户端:从盒子出现到通过状态的耗时(P50 / P95)
  • 服务端:兑换接口耗时与超时率
  • 业务:验证失败后重试率是否上升
提示

难度调整务必配合业务限流。单靠计算成本拦不住由真人操作的打码农场。