Rendimiento y mantenimiento

Caché de servidor: qué es, tipos y cómo funciona en la práctica

La caché de servidor guarda respuestas ya procesadas para servirlas instantáneamente sin repetir cálculos costosos, reduciendo drásticamente el tiempo de carga.

Top view of financial analysis tools on a desk including a laptop, smartphone, and graphs.

La caché de servidor es un mecanismo que almacena temporalmente las respuestas ya generadas — páginas HTML, resultados de consultas a base de datos, objetos PHP — para entregarlas de inmediato en peticiones siguientes sin tener que volver a procesarlas desde cero.

En pocas palabras: en lugar de que el servidor construya la misma página 500 veces al día, la construye una vez y sirve la copia guardada las otras 499.

Por qué la caché de servidor es fundamental

Cuando un usuario visita tu sitio, el servidor ejecuta una cadena de operaciones: interpreta PHP (u otro lenguaje), consulta la base de datos, une los datos con las plantillas HTML y envía el resultado. Cada paso consume tiempo y recursos.

Sin caché, todas esas operaciones se repiten en cada visita, en cada usuario. Con tráfico moderado eso es manejable; con miles de visitas simultáneas, el servidor se satura y los tiempos de respuesta se disparan.

La caché rompe ese ciclo: el resultado ya está listo. El servidor solo lee del almacenamiento temporal (RAM o disco) y responde en milisegundos.

Tipos de caché de servidor más comunes

Caché de página completa (Full Page Cache)

Guarda el HTML completo generado por una petición. En la siguiente visita al mismo URL, el servidor devuelve ese HTML directamente, sin ejecutar PHP ni consultar la base de datos.

Es el tipo más efectivo para reducir el TTFB (Time to First Byte). Herramientas como Varnish Cache, el módulo mod_cache de Apache o el plugin WP Rocket en WordPress implementan este enfoque.

Caché de objetos (Object Cache)

Almacena resultados de consultas a base de datos u otras operaciones costosas como "objetos" individuales en memoria RAM. PHP puede recuperar ese objeto en microsegundos en lugar de ejecutar de nuevo la consulta SQL.

Las soluciones más usadas son Redis y Memcached. Ambas son bases de datos en memoria ultrarrápidas diseñadas precisamente para esto.

Caché de código de bytes (Opcode Cache)

PHP debe compilar cada script .php a código de bytes (bytecode) antes de ejecutarlo. Sin caché de opcode, esa compilación ocurre en cada petición. Con caché de opcode, el bytecode compilado se guarda en memoria y PHP lo ejecuta directamente.

OPcache — incluido en PHP desde la versión 5.5 — es la implementación estándar. Activarlo puede reducir el consumo de CPU hasta un 50 % en sitios con mucho PHP.

Caché de base de datos (Query Cache)

Guarda el resultado de consultas SQL repetidas. Si la misma SELECT se ejecuta cien veces y los datos no cambian, el motor de base de datos devuelve el resultado almacenado sin volver a leer las tablas.

MySQL/MariaDB incluyen mecanismos de query cache, aunque en versiones recientes se prefiere confiar en el object cache externo (Redis) para mayor control.

Caché de CDN (Edge Cache)

No vive en tu servidor, sino en los nodos de una red de distribución de contenido. El CDN guarda copias de tus páginas y assets en decenas o cientos de ubicaciones geográficas. Los usuarios reciben la respuesta desde el nodo más cercano.

Cloudflare, BunnyCDN y KeyCDN son ejemplos comunes. Este tipo de caché combina los beneficios del full page cache con la reducción de latencia por proximidad geográfica.

Cómo funciona la caché en la práctica

El flujo básico de cualquier sistema de caché de servidor sigue este esquema:

  1. Llega una petición al servidor para /productos/zapatos.
  2. El servidor consulta el almacén de caché: ¿tengo una copia válida de esta URL?
  3. Si sí (cache hit): devuelve la copia almacenada. Tiempo: ~5 ms.
  4. Si no (cache miss): ejecuta PHP, consulta la BD, genera el HTML, lo almacena en caché y lo devuelve. Tiempo: 200-800 ms según la complejidad.

La clave está en el TTL (Time To Live): cuánto tiempo se considera válida una copia antes de que el servidor deba regenerarla. Una página de noticias podría tener un TTL de 5 minutos; una página de catálogo que rara vez cambia, 24 horas.

Tipo de caché Dónde vive Qué guarda Herramienta típica
Full Page Cache Servidor / RAM HTML completo Varnish, WP Rocket
Object Cache RAM Objetos PHP / resultados BD Redis, Memcached
Opcode Cache RAM del proceso PHP Bytecode compilado OPcache (nativo PHP)
CDN / Edge Cache Nodos distribuidos HTML, assets estáticos Cloudflare, BunnyCDN

Cuándo NO usar caché de servidor (o hacerlo con cuidado)

La caché no es adecuada para todo el contenido:

  • Páginas personalizadas por usuario: el carrito de compras, el panel de cuenta o cualquier página que muestre datos propios del usuario no debe cachearse en full page cache sin segmentar por usuario.
  • Formularios con tokens CSRF: si cacheas el HTML del formulario, todos los usuarios recibirán el mismo token y las validaciones de seguridad fallarán.
  • Contenido en tiempo real: precios de bolsa, marcadores deportivos o feeds de noticias que cambian cada segundo requieren un TTL muy bajo o ninguna caché de página.
  • Respuestas de APIs privadas: cachear respuestas autenticadas puede filtrar datos de un usuario a otro si la clave de caché no incluye la identidad del usuario.

La regla práctica: cachea contenido estático o semi-estático; sirve dinámicamente lo que depende de la identidad o el contexto del usuario.

Configurar caché de servidor en la práctica

La configuración depende de tu stack, pero los pasos generales son:

  1. Activa OPcache: casi siempre está disponible en hosting compartido y VPS. Verifica en phpinfo() que esté habilitado.
  2. Instala Redis o Memcached: en VPS/cloud, instala el servicio y conecta tu aplicación a él. En WordPress, los plugins Redis Object Cache o W3 Total Cache hacen la integración.
  3. Configura full page cache: con WP Rocket en WordPress, o con Varnish delante de tu servidor Apache/Nginx si gestionas tu propio servidor.
  4. Añade un CDN: conecta Cloudflare o BunnyCDN como capa final para servir contenido desde el edge.

Para una guía paso a paso de implementación, consulta los recursos de elenlace.com, donde cubrimos la configuración de caché para los stacks más comunes en México.

También puedes explorar más estrategias en nuestra sección de rendimiento web para complementar la caché con otras optimizaciones.

Conclusiones clave

  • La caché de servidor almacena respuestas ya procesadas para servirlas sin volver a generarlas, reduciendo el TTFB drásticamente.
  • Los cuatro tipos principales son: full page cache, object cache, opcode cache y CDN/edge cache — cada uno actúa en una capa diferente.
  • OPcache debe estar activo en cualquier servidor PHP; no hacerlo es desperdiciar rendimiento gratuito.
  • Redis o Memcached son ideales para object cache en aplicaciones con consultas a BD repetidas.
  • No cachees páginas personalizadas por usuario ni formularios con tokens de seguridad sin una estrategia de invalidación adecuada.
  • Un CDN complementa la caché de servidor añadiendo proximidad geográfica para usuarios en distintas ciudades o países.

¿Quieres implementar una estrategia de caché correcta para tu sitio desde el primer día? El equipo de elenlace.com configura y audita el stack de rendimiento completo para negocios en México y Latinoamérica.

Preguntas frecuentes

¿La caché de servidor es lo mismo que la caché del navegador?

No. La caché del navegador guarda archivos estáticos (CSS, JS, imágenes) en el dispositivo del usuario para no descargarlos de nuevo. La caché de servidor reduce el trabajo del servidor al evitar regenerar respuestas HTML o ejecutar consultas repetidas. Ambas son complementarias y deben activarse juntas para máximo rendimiento.

¿Cuánto puede mejorar el TTFB con caché de servidor?

Es habitual pasar de tiempos de respuesta de 300-800 ms a 10-30 ms con full page cache bien configurado. En sitios con mucho tráfico y páginas generadas dinámicamente, la mejora puede ser de 10× a 50×.

¿Cómo sé si mi hosting tiene caché de servidor activada?

Revisa los encabezados HTTP de respuesta con las DevTools de Chrome (pestaña Network → Headers). Busca cabeceras como X-Cache: HIT, CF-Cache-Status: HIT o X-Varnish. Si no ves ninguna de estas, es probable que la caché no esté activa o que estés recibiendo cache misses constantemente.

¿La caché puede mostrar contenido desactualizado a mis visitantes?

Sí, si el TTL es demasiado largo o si no invalidas la caché al publicar cambios. Los sistemas modernos de caché (Varnish, WP Rocket, Cloudflare) permiten purgar URL específicas o toda la caché al detectar cambios en el contenido, minimizando ese riesgo.

Compara proveedores

Otros proveedores y guías que vale la pena comparar:

← Todos