Clicky

Una CDN puede acelerar tu sitio web. ¡Esto es lo que necesitas saber!

CDN CouldFlare

Una CDN no reemplaza tu servidor web, se encuentra entre el usuario y el servidor web

Una Red de Entrega de Contenido (CDN, por sus singlas en inglés) está diseñada para reducir la carga en tus servidores web primarios almacenando en caché tus activos estáticos en una red de servidores. Estos servidores estarán más cerca de los usuarios, lo que puede acelerar tus tiempos de carga.

¿Cómo funcionan las CDN?

Sin una CDN, un usuario haría una solicitud a tu servidor web, que enviaría el HTML, las imágenes, los archivos JavaScript y cualquier otro activo que tu sitio necesite. El servidor también puede consultar una base de datos para solicitar contenido, como es el caso de los sistemas de gestión de contenido como WordPress o Joomla!. Todo esto pone mucha presión en tu servidor web para una sola solicitud.

Una CDN no reemplaza tu servidor web; se encuentra entre el usuario y el servidor web, y almacena en caché el contenido de tu sitio. Cada punto final de la CDN se denomina punto de presencia (PoP), y la mayoría de los proveedores de CDN tendrán cientos de ellos repartidos por todo el mundo. Tener un PoP físicamente cerca del usuario final reduce la latencia, lo que se conoce como el "borde de la red". Las CDN intentan optimizar la cantidad de tiempo que los usuarios pasan en el borde de la red sin tener que realizar una solicitud más en la red (y generar errores en tu servidor web).

Este tipo de CDN se denomina CDN de "extracción de origen (origin pull)" o "espejo". Un CDN de extracción refleja el contenido de tu sitio web y lo entrega con menor latencia y almacenamiento en caché mejorado. La otra variante se llama CDN de "inserción de origen (origin push)", que puede reemplazar algunas partes de tu servidor web. Las CDN de inserción se utilizan principalmente para alojar contenido que no sería factible alojar en servidores web tradicionales como servicios de transmisión de vídeo u otros medios de gran tamaño. Por ejemplo, las imágenes y los vídeos almacenados en Amazon S3 se pueden entregar a través de su CDN CloudFront en una configuración de inserción, eliminando la necesidad de alojar ese contenido por completo.

Almacenamiento en caché de todo el sitio

Muchas CDN se utilizan principalmente para almacenar en caché imágenes, archivos y otro contenido estático. Pero algunas CDN, en particular Cloudflare, Fastly y Amazon CloudFront, pueden almacenar en caché todo tu sitio. El almacenamiento en caché de todo el sitio se puede configurar para que caduque en solo unos segundos, lo que mantiene tu sitio receptivo y al mismo tiempo quita mucha carga de tus servidores web.

Puedes configurar reglas para cada tipo de página que tengas y elegir cuánto tiempo deseas que el contenido se almacene en caché. Esto se puede hacer a través del panel de administración con tu proveedor de CDN o agregando encabezados de Cache-Control a tus respuestas HTTP, con lo que puedes establecer max-age en un tiempo específico en segundos.

establecer nivel de cache

Sin embargo, no debes aplicar esta configuración de forma generalizada a todo tu sitio. Algunas cosas deben ser dinámicas. Por ejemplo, la página de perfil de un usuario, o cualquier página que requiera autenticación, nunca debe almacenarse en caché, de lo contrario, todos los que visiten su propia página de perfil se encontrarán viendo la información de otra cuenta. Esto es exactamente lo que le sucedió a Steam durante su venta de Navidad de 2015, cuando Valve actualizó su configuración de almacenamiento en caché para intentar mitigar un pico de tráfico y, sin darse cuenta, almacenó en caché los datos de los usuarios. Esto no permitió que nadie iniciara sesión como otro usuario, pero les permitió ver una copia de sus datos privados, lo que sigue siendo una gran brecha de seguridad.

En algunos casos, se pueden almacenar en caché las API. Un sitio como Reddit, por ejemplo, no necesita realizar una solicitud de base de datos cada vez que alguien solicita las publicaciones principales en la página de inicio. En su lugar, puede almacenarlas en caché cada minuto más o menos, y solo hacer solicitudes cuando sea necesario, como alguien que solicita nuevas publicaciones. Sin embargo, algunas API pueden fallar con el almacenamiento en caché, por lo que deberás realizar pruebas por tu parte para ver si funciona para el tuyo.

¿Deberías utilizar una CDN?

Si tu sitio web recibe alguna cantidad de tráfico, definitivamente debes almacenar en caché tus activos estáticos, como imágenes, hojas de estilo CSS y archivos JavaScript, incluso si no tienes problemas con el tráfico. Las CDN pueden acelerar tu sitio independientemente, simplemente porque están ubicadas mucho más cerca de los usuarios. Siempre que tu sitio tenga que hacer un apretón de manos, hay mucha menos distancia de ida y vuelta.

Si tu sitio recibe mucho tráfico, el almacenamiento en caché de todo el sitio (o al menos, en las páginas principales de tu sitio) puede quitarle mucha carga a tus servidores web.

Si estás utilizando un proveedor de alojamiento especializado, como SquareSpace, Shopify o WordPress, es probable que ese proveedor ya tenga su propio CDN integrado y, por lo general, se encargará de los detalles del alojamiento de tu sitio web por ti.

También debes hacer uso del caché del navegador, que puedes usar junto con una CDN. Básicamente, tus activos se almacenarán en el navegador del usuario durante un breve período de tiempo (de 5 a 10 minutos), de modo que si hacen clic en otra página de tu sitio, su navegador ni siquiera tendrá que solicitar el contenido que ya tiene. Pero si hiciste cambios en el sitio y volvieron al día siguiente, se les enviará una página actualizada desde la CDN porque ha expirado el caché del navegador.

Incluso si no estás utilizando una CDN para tu sitio web, debes obtener bibliotecas de JavaScript populares como jQuery de una CDN ampliamente utilizada. Esto significará que tu servidor web no tendrá que entregar ese archivo si el usuario ha estado recientemente en un sitio que usa la misma CDN y biblioteca.

Jesus_Caceres