Rate limiting защищает сервер от слишком большого числа запросов; HTTP-кэширование избегает повторения работы для запросов, на которые уже был дан ответ. Оба стандартизированы в HTTP и оба необходимы для production API на масштабе.
Rate limiting
Сервер ограничивает, сколько запросов клиент может сделать за окно, и возвращает 429 Too Many Requests при превышении. Он объявляет лимиты через заголовки, чтобы благовоспитанный клиент мог сам себя притормаживать:
HTTP/1.1 200 OK
RateLimit-Limit: 100
RateLimit-Remaining: 12
RateLimit-Reset: 30
