O que e CDN
CDN (Content Delivery Network) e um mecanismo que entrega conteudo a partir do local mais proximo do usuario, atraves de uma rede de servidores distribuidos pelo mundo.
Por que e necessario: Se o servidor de origem esta no Japao, usuarios nos EUA precisam esperar o tempo de ida e volta dos dados atraves do Pacifico. Com CDN, o conteudo pode ser obtido de um servidor de borda nos EUA, reduzindo drasticamente a latencia.
Estrutura Basica do CDN
flowchart TB
subgraph Tokyo["Regiao de Toquio"]
U1["Usuario (Toquio)"]
E1["Servidor de Borda (Toquio)"]
end
subgraph NY["Regiao de Nova York"]
U2["Usuario (NY)"]
E2["Servidor de Borda (NY)"]
end
subgraph Origin["Origem"]
O["Servidor de Origem (EUA)"]
end
U1 --> E1
E1 -.->|Em caso de cache miss| O
U2 --> E2
E2 -.->|Em caso de cache miss| O
- Servidor de Borda: Servidores de cache posicionados ao redor do mundo
- Servidor de Origem: Servidor que mantem o conteudo original
- PoP (Point of Presence): Data center onde os servidores de borda estao instalados
Fluxo de Operacao do CDN
Cache Hit
sequenceDiagram
participant U as Usuario
participant E as CDN Edge
U->>E: Requisicao
Note over E: Cache existe
E->>U: Resposta imediata
Cache Miss
sequenceDiagram
participant U as Usuario
participant E as CDN Edge
participant O as Servidor de Origem
U->>E: 1. Requisicao
Note over E: Sem cache
E->>O: 2. Buscar
O->>E: 3. Retornar conteudo
Note over E: 4. Salvar no cache
E->>U: 5. Resposta
Controle de Cache
Header Cache-Control
# Cache de 1 hora
Cache-Control: public, max-age=3600
# Sem cache
Cache-Control: no-store
# Revalidacao necessaria
Cache-Control: no-cache
# Cache apenas no CDN
Cache-Control: s-maxage=86400
Chave de Cache
O mesmo URL pode ter cache separado pelos seguintes elementos.
| Elemento | Exemplo |
|---|---|
| Parametro de query | ?version=2 |
| Headers | Accept-Encoding, Accept-Language |
| Cookie | Status de login |
| Dispositivo | Mobile/Desktop |
Invalidacao de Cache (Purge)
Metodo para excluir cache antigo quando o conteudo e atualizado.
Purge Imediato
# Exemplo de API 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 versao ou hash no nome do arquivo.
<!-- Numero de versao -->
<script src="/app.js?v=1.2.3"></script>
<!-- Hash de conteudo -->
<script src="/app.a1b2c3d4.js"></script>
Principais Funcionalidades do CDN
Protecao DDoS
flowchart TB
A["Trafego de ataque"] --> B["CDN Edge<br/>(Absorcao e Filtragem)"]
B --> C["Apenas trafego normal"]
C --> D["Servidor de Origem"]
Terminacao SSL/TLS
O CDN processa a conexao HTTPS e otimiza a conexao com a origem.
flowchart LR
U["Usuario"] -->|HTTPS| CDN["CDN"]
CDN -->|HTTP/Otimizado| O["Origem"]
Otimizacao de Imagens
flowchart TD
A["Original: image.jpg (2MB)"] --> B["Conversao automatica no CDN"]
B --> C["WebP: image.webp (400KB)"]
B --> D["AVIF: image.avif (300KB)"]
B --> E["Redimensionamento: reduzido para o tamanho necessario"]
Edge Computing
Executa codigo na borda do CDN, processando proximo ao usuario.
// Exemplo Cloudflare Workers
export default {
async fetch(request) {
const url = new URL(request.url);
// Teste A/B
const variant = Math.random() > 0.5 ? 'A' : 'B';
url.pathname = `/variant-${variant}${url.pathname}`;
return fetch(url);
}
}
Principais Provedores de CDN
| Provedor | Caracteristicas |
|---|---|
| Cloudflare | Plano gratuito disponivel, recursos de seguranca robustos |
| AWS CloudFront | Integracao com servicos AWS, Lambda@Edge |
| Fastly | Purge em tempo real, configuracao VCL |
| Akamai | Maior escala, voltado para empresas |
| Vercel Edge Network | Otimizado para Next.js, experiencia do desenvolvedor |
Quando Usar CDN
Adequado
- Assets estaticos (imagens, CSS, JavaScript)
- Streaming de video
- Sites com alcance global
- Resposta a picos de trafego
- Fortalecimento de seguranca
Requer Atencao
- Conteudo atualizado frequentemente
- Conteudo personalizado
- APIs que requerem tempo real
Resumo
CDN e uma infraestrutura importante que melhora a performance e seguranca de sites. Ao projetar estrategias de cache apropriadas e utilizar CDN de acordo com as caracteristicas do conteudo, voce pode melhorar significativamente a experiencia do usuario.
← Voltar para a lista