Какие знаешь варианты оптимизации API
Python
Middle
Без компании
Какие знаешь варианты оптимизации API
Ответы
- **Кэширование** – используй `Redis` или `Memcached` для хранения часто запрашиваемых данных.
```
from django.core.cache import cache
def get_data(request):
data = cache.get('cached_data')
if not data:
data = expensive_db_query()
cache.set('cached_data', data, timeout=3600)
return data
```
- **Пагинация** – уменьшай объем данных в ответе (`limit` и `offset`).
```
from rest_framework.pagination import PageNumberPagination
class CustomPagination(PageNumberPagination):
page_size = 20
```
- **Асинхронность** – `FastAPI` или `aiohttp` для обработки множества запросов без блокировки.
- **Сжатие данных** – `gzip` или `brotli` для уменьшения размера ответа.
- **Оптимизация БД** – индексы, `select_related`/`prefetch_related` в Django ORM, избегай N+1 запросов.
- **Rate Limiting** – ограничивай число запросов с одного IP (`django-ratelimit`).
- **CDN** – для статики и даже API-ответов, если данные не меняются часто.
- **Валидация на клиенте** – уменьшай лишние запросы с неверными данными.
- **HTTP/2** – уменьшает latency за счет мультиплексирования.
- **Минимизация логики в API** – выноси тяжелые вычисления в фоновые задачи (Celery).