Caching en Aplicaciones Web: Funciones y Niveles

Clase 27 de 33Curso de Creación de APIs con Ruby on Rails

Resumen

El caching es un pilar del rendimiento web: aplicado en el browser, en el CDN, en el servidor y dentro de la aplicación, reduce latencia, evita trabajo repetido y mejora la experiencia del usuario. Aquí verás cómo se encadenan estos niveles, qué problema resuelven y cuándo elegir memoria RAM o servicios como Redis y Memcached.

¿Qué es el caching y por qué acelera las aplicaciones web?

El caching consiste en guardar resultados ya calculados o archivos frecuentemente solicitados para responder más rápido la próxima vez. Aparece en RAM, en dispositivos móviles y en aplicaciones web. Acceder al file system o a la base de datos suele ser costoso; en cambio, servir desde memoria es mucho más veloz.

  • Evita leer del disco cuando el recurso ya está en memoria.
  • Minimiza viajes de red al reutilizar respuestas anteriores.
  • Reutiliza resultados calculados, como un archivo JavaScript de una single page application.

Ejemplo central: si el browser solicita un archivo JavaScript y no hay cache, el servidor debe leer del file system y devolverlo; esto es más lento que servirlo desde memoria o desde un CDN optimizado.

¿Cómo fluye una petición: browser, CDN, servidor y aplicación?

Cuando el usuario ingresa una URL, el browser realiza la petición. En producción, la primera parada suele ser un CDN. Si el CDN no lo tiene, pasa al servidor (como Apache o NGINX) que también puede cachear. Si tampoco está allí, llega a la aplicación, que puede calcular el recurso e incluso consultar la base de datos antes de responder. Luego, la respuesta se va guardando en cada nivel para acelerar las siguientes solicitudes.

¿Qué hace un CDN en el primer nivel de cache?

  • Distribuye assets estáticos como JavaScript, CSS y HTML.
  • Responde desde servidores cercanos al usuario para menor latencia.
  • Si hay acierto de cache, devuelve el archivo al instante.
  • Si hay fallo, solicita al servidor de origen y luego almacena el resultado.

¿Cómo cachea el servidor y el navegador?

  • Servidores como Apache o NGINX pueden tener cache interno de archivos.
  • El browser (Chrome, Firefox u otros) guarda en su cache lo que recibe para no pedirlo de nuevo en corto plazo.
  • Tras la primera respuesta completa, los niveles intermedios (navegador y CDN) sirven más rápido y evitan recalcular o releer del disco.

¿Qué pasa si nada está en cache?

  • El servidor llama a la aplicación.
  • La aplicación puede consultar la base de datos y calcular el archivo solicitado (por ejemplo, un JavaScript con datos).
  • La respuesta vuelve en cadena: aplicación → servidor → CDNbrowser, almacenándose en cada nivel para futuras peticiones.

¿Qué tipos de cache usar: RAM, Redis o Memcached?

Dentro de la aplicación, es común guardar resultados en memoria RAM para responder más rápido que yendo al disco o a la base de datos. Para escenarios más avanzados, se emplea un cache externo como Redis o Memcached:

  • Mantienen los datos en memoria para acceso muy rápido.
  • Son servicios especializados en almacenar y devolver información con baja latencia.
  • Se configuran desde frameworks como Rails o desde cualquier otra aplicación del lado del servidor.

Cuándo elegir cada opción:

  • Cache en RAM de la aplicación: sencillo y rápido de implementar; útil para respuestas calculadas con frecuencia.
  • Redis o Memcached: ideal cuando varias instancias de la aplicación deben compartir cache o cuando se requieren políticas de expiración más flexibles.

Habilidades prácticas que se ponen en juego:

  • Comprender y configurar un CDN como primer nivel de cache.
  • Activar cache interno en Apache o NGINX para servir assets con rapidez.
  • Implementar cache en memoria RAM dentro de la aplicación para resultados calculados.
  • Integrar Redis o Memcached como cache externo para acelerar lecturas frente a la base de datos.
  • Preparar el terreno para cachear búsquedas en un API con un almacén externo.

¿Tienes dudas sobre cómo adaptar estos niveles de cache a tu proyecto o cómo configurarlos en Rails? Comparte tu caso en los comentarios y conversemos.

      Caching en Aplicaciones Web: Funciones y Niveles