Caching en Aplicaciones Web: Funciones y Niveles
Clase 27 de 33 • Curso de Creación de APIs con Ruby on Rails
Contenido del curso
Proyecto
- 3

Creación de APIs con Rails: Proyecto Blog API paso a paso
04:37 min - 4

Configuración de Gemas para Pruebas en Proyectos Rails
06:26 min - 5

Configuración de Gemas en Proyectos Rails: Arspec, Factory Bot y Database Cleaner
07:25 min - 6

Implementación de un Health Check Endpoint en API con RSpec
12:28 min - 7

Diseño de Casos de Uso y Diagramas de Entidad para Aplicaciones
03:16 min - 8

Diagrama entidad relación: usuario y post
01:41 min - 9

Modelado de Aplicaciones con TDD en Rails
05:59 min - 10

Validaciones y Pruebas TDD en Rails: Modelos USR y Post
07:07 min - 11

Implementación de Endpoints para Listar y Mostrar Posts con TDD
15:12 min - 12

Implementar controlador Posts con TDD
10:34 min - 13

Pruebas TDD para crear y actualizar posts
10:12 min - 14

Implementación de Métodos y Manejo de Excepciones en Rails API
10:23 min - 15

Active Model serializers: control total de JSON en Rails
06:03 min - 16

Búsqueda y Filtrado de Posts por Título con TDD
05:57 min - 17

Implementación de Búsqueda de Posts con Servicios en Rails
06:06 min - 18

Problema N+1 en Rails: Detección y Solución Eficaz
04:40 min - 19

Identificación y solución del problema N+1 en Rails
06:20 min - 20

Flujo de Autenticación en APIs con Tokens y Proveedores
05:29 min - 21

Tests con RSpec para autenticación de tokens
12:17 min - 22

Autenticación con Tokens: Implementación en Rails API
05:53 min - 23

Autenticación de Usuarios en Controladores Rails
09:19 min - 24

Autenticación y Seguridad en CRUD de Posts en Rails
09:17 min - 25

Pruebas de Creación y Actualización con Autenticación en Rails
14:21 min - 26

Probando API Ruby on Rails con Postman
10:43 min - 27

Caching en Aplicaciones Web: Funciones y Niveles
Viendo ahora - 28

Aceleración de Búsquedas en Rails con Caching
08:23 min - 29

Background Jobs en Rails: Conceptos y Funcionalidades
05:45 min - 30

Procesamiento en Background y Envío de Correos con Rails
09:45 min - 31

Envío de Correos en Rails con ActionMailer y Background Jobs
11:06 min - 32
Autenticación y Autorización con JWT y Auth0 en Aplicaciones Web
03:48 min
Cierre
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 → CDN → browser, 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.