Que es un CDN
Un CDN (Content Delivery Network) es un mecanismo que entrega contenido desde el servidor mas cercano al usuario a traves de una red de servidores distribuidos en todo el mundo.
Por que es necesario: Si el servidor de origen esta en Japon, los usuarios en Estados Unidos tienen que esperar el tiempo que tarda la ida y vuelta de datos a traves del Pacifico. Con un CDN, pueden obtener el contenido desde un servidor edge en Estados Unidos, reduciendo significativamente la latencia.
Configuracion Basica de un CDN
flowchart TB
subgraph Tokyo["Region de Tokio"]
U1["Usuario (Tokio)"]
E1["Servidor Edge (Tokio)"]
end
subgraph NY["Region de Nueva York"]
U2["Usuario (NY)"]
E2["Servidor Edge (NY)"]
end
subgraph Origin["Origen"]
O["Servidor de Origen (US)"]
end
U1 --> E1
E1 -.->|En caso de cache miss| O
U2 --> E2
E2 -.->|En caso de cache miss| O
- Servidor Edge: Servidores de cache distribuidos en todo el mundo
- Servidor de Origen: Servidor que contiene el contenido original
- PoP (Point of Presence): Centro de datos donde se instalan los servidores edge
Flujo de Operacion del CDN
Cache Hit
sequenceDiagram
participant U as Usuario
participant E as CDN Edge
U->>E: Solicitud
Note over E: Cache disponible
E->>U: Respuesta inmediata
Cache Miss
sequenceDiagram
participant U as Usuario
participant E as CDN Edge
participant O as Servidor de Origen
U->>E: 1. Solicitud
Note over E: Sin cache
E->>O: 2. Obtener
O->>E: 3. Devolver contenido
Note over E: 4. Guardar en cache
E->>U: 5. Respuesta
Control de Cache
Header Cache-Control
# Cache por 1 hora
Cache-Control: public, max-age=3600
# No almacenar en cache
Cache-Control: no-store
# Requiere revalidacion
Cache-Control: no-cache
# Cache solo en CDN
Cache-Control: s-maxage=86400
Clave de Cache
Incluso con la misma URL, la cache puede separarse por los siguientes elementos.
| Elemento | Ejemplo |
|---|---|
| Parametro de consulta | ?version=2 |
| Header | Accept-Encoding, Accept-Language |
| Cookie | Estado de login |
| Dispositivo | Movil/Escritorio |
Invalidacion de Cache (Purge)
Metodo para eliminar la cache antigua cuando se actualiza el contenido.
Purge Inmediato
# Ejemplo de API de Cloudflare
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" \
-H "Authorization: Bearer {token}" \
-d '{"files":["https://example.com/image.jpg"]}'
Cache Busting
Incluir version o hash en el nombre del archivo.
<!-- Numero de version -->
<script src="/app.js?v=1.2.3"></script>
<!-- Hash de contenido -->
<script src="/app.a1b2c3d4.js"></script>
Funciones Principales del CDN
Proteccion DDoS
flowchart TB
A["Trafico de ataque"] --> B["CDN Edge<br/>(Absorcion y filtrado)"]
B --> C["Solo trafico normal"]
C --> D["Servidor de Origen"]
Terminacion SSL/TLS
El CDN procesa las conexiones HTTPS y optimiza la conexion al origen.
flowchart LR
U["Usuario"] -->|HTTPS| CDN["CDN"]
CDN -->|HTTP/Optimizado| O["Origen"]
Optimizacion de Imagenes
flowchart TD
A["Original: image.jpg (2MB)"] --> B["Conversion automatica en CDN"]
B --> C["WebP: image.webp (400KB)"]
B --> D["AVIF: image.avif (300KB)"]
B --> E["Redimensionado: Reducido al tamano necesario"]
Edge Computing
Ejecuta codigo en el edge del CDN, procesando cerca del usuario.
// Ejemplo de Cloudflare Workers
export default {
async fetch(request) {
const url = new URL(request.url);
// Prueba A/B
const variant = Math.random() > 0.5 ? 'A' : 'B';
url.pathname = `/variant-${variant}${url.pathname}`;
return fetch(url);
}
}
Principales Proveedores de CDN
| Proveedor | Caracteristicas |
|---|---|
| Cloudflare | Plan gratuito disponible, funciones de seguridad completas |
| AWS CloudFront | Integracion con servicios AWS, Lambda@Edge |
| Fastly | Purge en tiempo real, configuracion VCL |
| Akamai | Mayor escala, orientado a empresas |
| Vercel Edge Network | Optimizado para Next.js, experiencia de desarrollador |
Cuando Usar un CDN
Casos Adecuados
- Activos estaticos (imagenes, CSS, JavaScript)
- Streaming de video
- Sitios web con despliegue global
- Respuesta a picos de trafico
- Fortalecimiento de seguridad
Casos que Requieren Precaucion
- Contenido que se actualiza frecuentemente
- Contenido personalizado
- APIs que requieren tiempo real
Resumen
El CDN es una infraestructura importante que mejora el rendimiento y la seguridad de los sitios web. Disenando estrategias de cache apropiadas y aprovechando el CDN segun las caracteristicas del contenido, puede mejorar significativamente la experiencia del usuario.
← Volver a la lista