配额与限流
PV 与 UV 两层额度、它们返回的状态码,以及计数器的实现。
两层互相独立的保护用于防止真实密钥被刷爆。两者都按单个密钥生效,并在 UTC 跨天时重置。
PV —— 每日请求数
| 属性 | 取值 |
|---|---|
| 维度 | 单个密钥 |
| 上限 | 套餐限制你在所有密钥上可分配的 PV 配额总和 |
| 预警 | 达到配额的 75% 时触发 pv_warning |
| 拦截 | 达到 100% 时该密钥停止转发 |
| 响应 | 403 { "error": "pv quota fused" } |
UV —— 每日访客
每个密钥同时限制两件事:
| 属性 | 取值 |
|---|---|
| 不同访客数 | 允许使用该密钥的访客数量上限,避免密钥被到处传阅 |
| 单访客调用数 | 任一访客当天可发起的调用次数上限,避免单个调用方吃满额度 |
| 访客标识 | sha256(user-agent + IP),user-agent 与 IP 本身不落库 |
| 响应 | 新访客超额:429 { "error": "uv quota exceeded" };单访客超额:429 { "error": "per-visitor quota exceeded" } |
| 告警 | 当天第一个被拦截的新访客触发 uv_exceeded 告警;此后每个新访客照样被拦截,但不再发信 |
配额为 0 表示该类请求全部阻断:PV 为 0 不转发任何请求,不同访客数为 0 不接受
任何新访客,单访客调用数为 0 则任何调用都不放行。
计数器
| 属性 | 取值 |
|---|---|
| 存储 | D1,每个密钥每个 UTC 日一行 |
| 并发 | 每个上限由单条 SQL 的守卫判定,并发请求不会超额放行 |
| 窗口 | 日期是主键的一部分,跨天即新的一行,无需滚动重置 |
| 保留 | 按天留存,但限额只统计当天 |
各套餐的额度上限与升级方式见 定价页。