Rate limiting 保护 server 免受太多请求;HTTP caching 避免为它已经回答过的请求重复工作。两者都在 HTTP 中被标准化,且对一个规模化的生产 API 都不可或缺。
Rate limiting
server 给一个 client 在每个时间窗口内可发的请求数设上限,超过时返回 429 Too Many Requests。它通过 header 公布限额,让一个守规矩的 client 能自我节流:
HTTP/1.1 200 OK
RateLimit-Limit: 100
RateLimit-Remaining: 12
RateLimit-Reset: 30
HTTP/1.1 429 Too Many Requests
Retry-After: 30
{ "error": "rate limit exceeded, retry in 30s" }
