Rate limiting protects the server from too many requests; HTTP caching avoids repeating work for requests it has already answered. Both are standardized in HTTP and both are essential for a production API at scale.
Rate limiting
The server caps how many requests a client may make per window and returns 429 Too Many Requests when exceeded. It advertises limits via headers so a well-behaved client can self-throttle:
HTTP/1.1 200 OK
RateLimit-Limit: 100
RateLimit-Remaining: 12
RateLimit-Reset: 30
