Rendimiento de API y Caching
El rendimiento de API y el caching reducen la latencia, aumentan el throughput y ahorran recursos de backend reutilizando respuestas y cálculos.
Descripción compacta
El rendimiento de una API mide qué tan rápido y eficientemente procesa las solicitudes. Las métricas clave son latencia, throughput y tasa de errores. El caching es uno de los métodos más efectivos para mejorar el rendimiento, almacenando datos ya calculados o recuperados. Puede ocurrir en varios niveles: navegador, CDN, API Gateway, servidor de aplicaciones o base de datos. HTTP ofrece headers de cache estandarizados como Cache-Control, ETag, Last-Modified y Expires. Cachés del lado del servidor como Redis o Memcached almacenan datos frecuentes en memoria. Una estrategia de caching bien pensada considera la duración, invalidación, consistencia y la elección correcta del nivel de cache. La optimización de rendimiento también abarca índices de base de datos, paginación, asincronía, compresión, load balancing y serialización eficiente.
Componentes principales
Latencia y Throughput
La latencia es el tiempo que tarda una solicitud desde el envío hasta la respuesta. El throughput es la cantidad de solicitudes que una API puede procesar por unidad de tiempo. Un buen rendimiento de API significa baja latencia, alto throughput y tasa de errores estable.
HTTP Cache Headers
Cache-Control es el header HTTP más importante para caching. Define reglas como max-age, no-cache, no-store, private o public. ETag y Last-Modified habilitan solicitudes condicionales con If-None-Match e If-Modified-Since. El servidor puede responder con 304 Not Modified si los datos no cambiaron, sin enviar el body nuevamente.
Browser Cache
Los navegadores cachean respuestas basándose en los HTTP cache headers. Esto reduce el tráfico de red y mejora el tiempo de carga para solicitudes recurrentes. Para datos sensibles se debe usar private o no-store para que el navegador no guarde nada.
CDN Caching
Los Content Delivery Networks cachean respuestas de API o contenido estático en ubicaciones distribuidas geográficamente. Reduce la latencia para usuarios en todo el mundo y alivia los servidores de backend. Los CDNs son especialmente adecuados para datos públicos y frecuentemente solicitados.
API Gateway Cache
Los API Gateways pueden cachear respuestas antes de enviarlas a los servicios de backend. Reduce la carga del backend y los tiempos de respuesta. Los gateways verifican headers de cache, rate limits y autenticación antes de pasar una solicitud al cache o al backend.
Cache del lado del servidor
Los cachés del lado del servidor como Redis o Memcached almacenan datos en memoria. Se usan para evitar consultas a base de datos, cálculos costosos o llamadas a APIs externas. Los caches se pueden gestionar con TTL, invalidación o Cache-Aside Pattern.
Cache-Aside Pattern
En el Cache-Aside Pattern, la aplicación verifica primero el cache. Si los datos no están presentes, se cargan desde la base de datos y se guardan en el cache. En actualizaciones, el cache se invalida o se actualiza. Este patrón es flexible y ampliamente usado.
ETag y solicitudes condicionales
Un ETag es un valor que representa la versión de un recurso. El cliente envía el ETag en el header If-None-Match en una solicitud posterior. Si el recurso no cambió, el servidor responde con 304 Not Modified. Esto ahorra ancho de banda y tiempo de procesamiento.
Cache Invalidation
La invalidación de cache es el desafío de mantener los caches actualizados. Las estrategias incluyen expiración basada en TTL, invalidación explícita al escribir, Write-Through Caching e invalidación basada en eventos. Una invalidación incorrecta lleva a datos obsoletos.
Paginación y volumen de datos
Las respuestas grandes aumentan la latencia y el consumo de memoria. La paginación, filtros y ordenamiento limitan la cantidad de datos devueltos. Los clientes deben recuperar solo los datos que realmente necesitan.
Optimización de base de datos
Las consultas lentas a la base de datos son a menudo un cuello de botella para el rendimiento de API. Los índices, queries optimizadas, desnormalización, caching y connection pooling mejoran los tiempos de respuesta. Las solicitudes de larga duración deben procesarse de forma asincrónica o paginada.
Compresión
La compresión con gzip o Brotli reduce el tamaño de los response bodies, especialmente en JSON. Los servidores y clientes modernos soportan compresión de forma predeterminada. El header Accept-Encoding señala los procedimientos soportados.
Ejemplo práctico
Una API de datos de productos utiliza múltiples niveles de caching para mejorar el rendimiento.
Configuración de cache para datos de productos públicos:
GET /api/v1/products/42
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: public, max-age=3600
ETag: "abc123"
{
"id": 42,
"name": "Laptop",
"price": 999
}
En una solicitud posterior, el cliente envía:
GET /api/v1/products/42
If-None-Match: "abc123"
Si el producto no cambió, el servidor responde con:
HTTP/1.1 304 Not Modified
En el lado del servidor, el producto también se almacena en Redis con un TTL de una hora. Cuando el precio cambia, se invalida el cache de Redis y del CDN para que los clientes obtengan los datos actualizados.
FAQ: Rendimiento de API y Caching
1. ¿Qué es API Performance?
2. ¿Qué es Caching?
3. ¿Qué es Cache-Control?
4. ¿Qué es un ETag?
5. ¿Qué es un CDN?
6. ¿Qué es Redis?
7. ¿Qué es el Cache-Aside Pattern?
8. ¿Qué es 304 Not Modified?
9. ¿Qué es Cache Invalidation?
10. ¿Qué es Write-Through Caching?
11. ¿Qué es un TTL?
12. ¿Qué es private vs public Caching?
13. ¿Qué es no-store?
14. ¿Qué es Compresión en APIs?
15. ¿Cuáles son las mejores prácticas para API Caching?
Fuentes
- https://www.rfc-editor.org/rfc/rfc9111
- https://redis.io/docs/manual/keyspace-notifications/
- https://developer.mozilla.org/docs/Web/HTTP/Caching
Lecturas recomendadas sobre rendimiento y arquitectura de APIs
Si quieres profundizar en rendimiento de APIs, Caching y diseño de sistemas, te recomendamos los siguientes libros:
Keine Bücher für Kategorie "software-engineering" gefunden.



