Parte de nuestra serie Performance & Scalability
Leer la guía completaOptimización del rendimiento de CDN: la guía completa para una entrega global más rápida
Cada 100 ms de mejora de la latencia aumenta las tasas de conversión de comercio electrónico en un 1,1 %. Para una tienda que gana 1 millón de dólares al mes, esa mejora de 100 ms se traduce en 132 000 dólares al año en ingresos adicionales. La optimización de CDN no es algo técnico agradable, es una palanca de ingresos directa.
Esta guía cubre la arquitectura CDN, estrategias de almacenamiento en caché, informática de punta y ajuste del rendimiento para aplicaciones web, tiendas de comercio electrónico y sistemas ERP.
Conclusiones clave
- Los encabezados de caché adecuados por sí solos pueden reducir la carga del servidor de origen entre un 60 y un 80 %.
- La optimización de imágenes a través de transformaciones CDN reduce el peso de la página entre un 40 y un 60 % sin cambios de código
- Edge Computing acerca la lógica API a los usuarios, reduciendo la latencia de 200 ms a 20 ms para las respuestas almacenadas en caché.
- Las estrategias de múltiples CDN brindan conmutación por error y optimización geográfica para audiencias globales
Fundamentos de la arquitectura CDN
Cómo funcionan las CDN
Una CDN es una red de servidores distribuidos globalmente que almacenan en caché y sirven contenido desde las ubicaciones más cercanas al usuario.
User in Tokyo --> CDN Edge (Tokyo, 5ms) --> [Cache HIT] --> Response
User in London --> CDN Edge (London, 5ms) --> [Cache MISS] --> Origin (US-East, +120ms) --> Cache + Response
User in London --> CDN Edge (London, 5ms) --> [Cache HIT] --> Response (subsequent requests)
Qué almacenar en caché
| Tipo de contenido | Duración de la caché | Encabezado de control de caché |
|---|---|---|
| Activos estáticos (JS, CSS) | 1 año (inmutable) | CÓDIGO0 |
| Imágenes | 30 días | CÓDIGO0 |
| Fuentes | 1 año | CÓDIGO0 |
| Páginas HTML (estáticas) | 5 minutos | CÓDIGO0 |
| Respuestas API (públicas) | 1-5 minutos | CÓDIGO0 |
| Respuestas API (privadas) | No almacenar en caché | CÓDIGO0 |
Encabezados de control de caché
Configuración de caché de Next.js
// next.config.ts
const nextConfig = {
async headers() {
return [
{
source: '/_next/static/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
{
source: '/images/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=2592000',
},
],
},
];
},
};
Encabezados de caché de Nginx
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 365d;
add_header Cache-Control "public, immutable";
add_header Vary "Accept-Encoding";
}
location ~* \.html$ {
expires 5m;
add_header Cache-Control "public, must-revalidate";
}
# API responses - let the application control caching
location /api/ {
proxy_pass http://backend;
proxy_cache_bypass $http_authorization;
}
Optimización de imagen
Las imágenes representan entre el 50% y el 70% del peso de la página en la mayoría de los sitios web. La optimización de imágenes basada en CDN elimina la necesidad de procesamiento de imágenes en tiempo de compilación.
Transformaciones de imágenes de Cloudflare
<!-- Original: 2.4 MB JPEG -->
<!-- Optimized: 180 KB WebP, properly sized -->
<img
src="/cdn-cgi/image/width=800,quality=80,format=auto/images/product-hero.jpg"
alt="Product"
width="800"
height="600"
loading="lazy"
/>
Componente de imagen Next.js con CDN
// next.config.ts
const nextConfig = {
images: {
loader: 'custom',
loaderFile: './lib/image-loader.ts',
},
};
// lib/image-loader.ts
export default function cloudflareLoader({
src,
width,
quality,
}: {
src: string;
width: number;
quality?: number;
}) {
const params = [`width=${width}`, `quality=${quality || 80}`, 'format=auto'];
return `/cdn-cgi/image/${params.join(',')}${src}`;
}
Impacto de la optimización de la imagen
| Métrica | Antes de la optimización de CDN | Después de la optimización de CDN |
|---|---|---|
| Tamaño medio de imagen | 850 KB | 120 KB |
| Peso de página (imágenes) | 4,2MB | 680 KB |
| LCP (pintura con mayor contenido) | 3,8s | 1,4s |
| Tiempo total de carga de la página | 5,2s | 2,1s |
Computación de borde
Trabajadores de Cloudflare para el almacenamiento en caché de API
// worker.js - Cache API responses at the edge
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
// Only cache GET requests to public API endpoints
if (request.method !== 'GET' || !url.pathname.startsWith('/api/public/')) {
return fetch(request);
}
const cache = caches.default;
const cacheKey = new Request(url.toString(), request);
// Check cache
let response = await cache.match(cacheKey);
if (response) {
return response;
}
// Fetch from origin
response = await fetch(request);
// Clone and cache successful responses
if (response.ok) {
const cachedResponse = new Response(response.body, response);
cachedResponse.headers.set('Cache-Control', 'public, max-age=300');
cachedResponse.headers.set('X-Cache-Status', 'MISS');
event.waitUntil(cache.put(cacheKey, cachedResponse.clone()));
return cachedResponse;
}
return response;
}
Casos de uso de Edge para comercio electrónico
| Caso de uso | Mejora de la latencia | Implementación |
|---|---|---|
| API del catálogo de productos | 200 ms a 5 ms | Caché en el borde durante 5 minutos |
| Redireccionamiento por geolocalización | 100 ms a 1 ms | Trabajador perimetral con búsqueda de IP |
| Pruebas A/B | 50 ms a 0 ms | El trabajador perimetral asigna variante |
| Detección de robots | 100 ms a 5 ms | Desafío de borde antes que origen |
| Localización de precios | 150 ms a 5 ms | Trabajador de borde con conversión de moneda |
Comparación de proveedores de CDN
| Característica | Llamarada de nube | AWS CloudFront | Rápidamente | Conejito CDN |
|---|---|---|---|---|
| PoP globales | 310+ | 450+ | 80+ | 114+ |
| Nivel gratuito | Generoso | 1 TB/mes (12 meses) | Ninguno | Ninguno |
| Computación perimetral | Trabajadores | Lambda@Edge | Computar en el borde | Secuencias de comandos perimetrales |
| Optimización de imagen | Incorporado | Requiere Lambda | Incorporado | Incorporado |
| Soporte WebSocket | Sí | Sí | Sí | Sí |
| Protección DDoS | Incluido | Escudo AWS (adicional) | Incluido | Básico |
| Precio inicial | Gratis | Pago por uso | $50/mes | $1/mes |
Recomendación: Cloudflare para la mayoría de las empresas. El nivel gratuito es generoso, la red perimetral es la más grande y los trabajadores brindan informática perimetral potente sin infraestructura adicional.
Estrategias multi-CDN
¿Por qué Multi-CDN?
Ninguna CDN tiene el mejor rendimiento en todas las regiones. Una estrategia de múltiples CDN dirige a los usuarios a la CDN de mejor rendimiento para su ubicación:
| Enfoque | Complejidad | Costo | Beneficio |
|---|---|---|---|
| Primario + conmutación por error | Bajo | 1,1x | Fiabilidad |
| Rutas geográficas | Medio | 1,3x | Optimización de latencia |
| Enrutamiento basado en el rendimiento | Alto | 1,5x | La mejor latencia posible |
Implementación
Utilice enrutamiento a nivel de DNS para dirigir a los usuarios a la CDN óptima:
User request -> DNS (Cloudflare/Route53)
|
+--> US/EU traffic -> Cloudflare (best PoP coverage)
|
+--> APAC traffic -> AWS CloudFront (strong APAC presence)
|
+--> China traffic -> Alibaba CDN (required for China performance)
Para la mayoría de las empresas, una única CDN (Cloudflare) con una CDN de conmutación por error configurada a nivel de DNS proporciona suficiente redundancia sin la complejidad del enrutamiento completo de varias CDN.
Errores comunes de CDN
Error 1: almacenar en caché el contenido autenticado
Nunca almacene en caché respuestas que contengan datos específicos del usuario. Una respuesta almacenada en caché para el usuario A enviada al usuario B es una violación de seguridad. Utilice Cache-Control: private, no-store para todas las respuestas API autenticadas.
Error 2: Ignorar la destrucción de caché en implementaciones
Cuando implementa JavaScript o CSS nuevos, los usuarios pueden recibir versiones antiguas almacenadas en caché. Soluciones:
- Hash de contenido: incluya un hash en el nombre del archivo (
app.a1b2c3d4.js). Next.js hace esto automáticamente. - Borrar caché al implementar: purgue el caché CDN como parte de su proceso de implementación.
- URL versionadas:
/v2/styles.cssen lugar de/styles.css.
Error 3: Configuración incorrecta de CDN para contenido dinámico
Si su CDN almacena en caché contenido dinámico que no debería almacenarse en caché (respuestas API, páginas HTML con estado de usuario), proporcionará datos obsoletos o incorrectos. Audite las reglas de caché de su CDN con regularidad y utilice encabezados Vary para evitar conflictos de almacenamiento en caché.
Medición del desempeño
Objetivos principales de Web Vitals
| Métrica | Bueno | Necesita mejorar | Pobre |
|---|---|---|---|
| LCP (pintura con mayor contenido) | <2,5 s | 2,5-4,0 s | >4,0 s |
| INP (Interacción con la siguiente pintura) | <200 ms | 200-500 ms | >500ms |
| CLS (cambio de diseño acumulativo) | <0,1 | 0,1-0,25 | >0,25 |
Supervisión del rendimiento de la caché
# Check CDN cache hit ratio
curl -sI https://example.com/page | grep -i "cf-cache-status\|x-cache\|age"
# Expected output for a cached response:
# cf-cache-status: HIT
# age: 3600
Realice un seguimiento de la tasa de aciertos de la caché a lo largo del tiempo. Objetivo: más del 85 % para activos estáticos, más del 50 % para contenido dinámico.
Preguntas frecuentes
¿Necesitamos una CDN si nuestros usuarios están en un país?
Sí, pero los beneficios cambian. En lugar de una reducción de la latencia geográfica, obtiene: protección DDoS, descarga de terminación SSL, optimización de imágenes y reducción de la carga del servidor de origen. Incluso para audiencias de un solo país, una CDN reduce los costos del servidor y mejora la confiabilidad. El nivel gratuito de Cloudflare hace que esta sea una mejora sin costo alguno.
¿Cómo manejamos la invalidación de caché para contenido dinámico?
Tres estrategias: (1) TTL cortos (de 1 a 5 minutos) para contenido que cambia con frecuencia, (2) etiquetas de caché con purga por etiqueta para actualizaciones de contenido, (3) encabezados obsoletos mientras se revalidan que muestran contenido almacenado en caché mientras recuperan contenido nuevo en segundo plano. Utilice s-maxage para la caché CDN y max-age para la caché del navegador de forma independiente.
¿Deberíamos utilizar una CDN para nuestro sistema ERP?
CDN es beneficioso para activos estáticos de ERP (JavaScript, CSS, imágenes) y portales públicos. No almacene en caché las respuestas API autenticadas ni el contenido dependiente de la sesión. ECOSIRE configura el almacenamiento en caché de CDN como parte de nuestros servicios de implementación de Odoo para garantizar un almacenamiento en caché óptimo sin riesgos de seguridad.
¿Cómo interactúa CDN con la representación del lado del servidor?
Para las páginas SSR de Next.js, configure la CDN para que almacene en caché según la URL completa (incluidos los parámetros de consulta) con TTL cortos (de 1 a 5 minutos). Utilice stale-while-revalidate para ofrecer contenido ligeramente obsoleto mientras Next.js se regenera en segundo plano. ISR (regeneración estática incremental) funciona de forma natural con el almacenamiento en caché de CDN.
¿Qué viene después?
La optimización de CDN se combina naturalmente con pruebas de carga para validar el rendimiento bajo carga y monitoreo para realizar un seguimiento de las tasas de aciertos de caché y la latencia. Para conocer la hoja de ruta completa para la optimización de la infraestructura, consulte nuestra guía de DevOps para pequeñas empresas.
Comuníquese con ECOSIRE para obtener consultoría sobre configuración de CDN y optimización del rendimiento.
Publicado por ECOSIRE: ayuda a las empresas a entregar contenido más rápido en todo el mundo.
Escrito por
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Haga crecer su negocio con ECOSIRE
Soluciones empresariales en ERP, comercio electrónico, inteligencia artificial, análisis y automatización.
Artículos relacionados
GitHub Actions CI/CD para proyectos Monorepo
Guía completa de CI/CD de GitHub Actions para monorepos de Turborepo: compilaciones solo afectadas, trabajos paralelos, estrategias de almacenamiento en caché, implementaciones basadas en el entorno y mejores prácticas de seguridad.
Optimización de calendario y reservas en GoHighLevel
Optimice su calendario y sistema de reservas de GoHighLevel para reducir las ausencias, completar su agenda de manera eficiente y automatizar los recordatorios de citas para obtener mayores tasas de presentación e ingresos.
Optimización de la página de destino en GoHighLevel: pruebas A/B y conversión
Domine la optimización de la página de destino en GoHighLevel. Aprenda la configuración de pruebas A/B, técnicas de optimización de la tasa de conversión y patrones de diseño de embudo probados que aumentan la captura de clientes potenciales.
Más de Performance & Scalability
Depuración y monitoreo de Webhook: la guía completa de solución de problemas
Domine la depuración de webhooks con esta guía completa que cubre patrones de falla, herramientas de depuración, estrategias de reintento, paneles de monitoreo y mejores prácticas de seguridad.
Prueba de carga de k6: pruebe sus API antes del lanzamiento
Domine las pruebas de carga de k6 para las API de Node.js. Cubre aumentos de usuarios virtuales, umbrales, escenarios, HTTP/2, pruebas de WebSocket, paneles de Grafana y patrones de integración de CI.
Configuración de producción de Nginx: SSL, almacenamiento en caché y seguridad
Guía de configuración de producción de Nginx: terminación SSL, HTTP/2, encabezados de almacenamiento en caché, encabezados de seguridad, limitación de velocidad, configuración de proxy inverso y patrones de integración de Cloudflare.
Ajuste del rendimiento de Odoo: PostgreSQL y optimización del servidor
Guía experta para ajustar el rendimiento de Odoo 19. Cubre la configuración, indexación, optimización de consultas, almacenamiento en caché de Nginx y dimensionamiento del servidor de PostgreSQL para implementaciones empresariales.
Odoo vs Acumatica: ERP en la nube para empresas en crecimiento
Comparación de Odoo y Acumatica para 2026: modelos de precios únicos, escalabilidad, profundidad de fabricación y qué ERP en la nube se adapta a su trayectoria de crecimiento.
Prueba y seguimiento de agentes de IA en producción
Una guía completa para probar y monitorear agentes de IA en entornos de producción. Cubre marcos de evaluación, observabilidad, detección de deriva y respuesta a incidentes para implementaciones de OpenClaw.