Desarrollador Full-stack: pregunta de entrevista
¿Dónde aplicas caché en una aplicación full-stack?
Aplica caché en la capa que controla la frescura: HTTP/CDN para respuestas públicas, cliente para estado remoto y backend para lecturas compartidas costosas. Define claves, TTL, invalidación, stampede y tolerancia a datos obsoletos.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Cada capa cachea aquello cuyas reglas de frescura posee. Una CDN o caché HTTP sirve respuestas públicas e idénticas como assets, páginas de producto y lecturas de API sin autenticación indexadas por URL y cabeceras Vary. El navegador o una biblioteca cliente cachea estado del servidor por usuario con semántica stale-while-revalidate para que la navegación sea instantánea. El backend cachea cálculos compartidos caros en Redis o en proceso, con coalescencia de solicitudes para que un fallo de caché bajo carga no provoque una estampida hacia la base de datos. Los datos personales o transaccionales se cachean solo con una ruta explícita de invalidación, y cada clave incluye lo que hace distinto al resultado.
Ejemplo
La página de producto se cachea en la CDN 60 segundos y se purga al publicar; el cliente guarda el carrito en una caché de consultas que refresca al recuperar el foco; el backend cachea la matriz de envíos calculada durante diez minutos con un lock para que solo un worker la recalcule. El saldo de la cuenta nunca se cachea porque un valor obsoleto genera tickets de soporte.
Errores frecuentes
- Cachear una respuesta personalizada en la CDN y servir los datos de un usuario a otro.
- Fijar un TTL sin invalidación alguna y aceptar datos incorrectos tras las escrituras.
- Cachear en tres capas con tres TTL distintos, de modo que nadie puede predecir cuándo aparece un cambio.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.