Otimização de CDN e latency reducition
1) Metas e mapa de atrasos
Latency = DNS + TCP/TLS + TTFB (servidor/orijin/dinheiro) + transferência de conteúdo (RPT x volume) + render cliente.
Otimização = reduzindo o número de RPT, reduzindo bytes e transferindo computação/dinheiro para perto do usuário.
2) Arquitetura CDN
O Anycast POPs é um nó de médio prazo para o roteiro BGP.
Tiered caching/Origin Shield é uma camada intermediária «guarda-chuva» que reduz a tempestade de miss em orijinha.
Geo-/Trajing Regional - vinculação tenante/jurisdição (soberania de dados, licenças).
Failover - Oridgin/região de reserva, health-amostras e interruptor rápido.
3) Dinheiro: chaves, cabeçalhos, estratégias
3. 1 Chaves de cachê (cachê key)
Padrão: 'scheme + host + path +? query'.
Adicione apenas as opções ('? v =', '? lang =', '? tenant ='). O resto está em ignore-params.
'Vary' é o mínimo: 'Accept-Encoding', 'Accept-Language' (se for realmente necessário), 'Autorization' normalmente quebra o dinheiro.
3. 2 Políticas
Público estática: 'Cachê-Controle: público, max-age = 31536000, imutável' + rev (hash no nome).
Seminâmica (diretórios, regras, FAQ): 's-maxage = 300, stale-while-revalidate = 600, stale-if-erro = 86400'.
API-GET: Use ETag/Last-Modified, 'SWR/SIE', ative o coalescing (um pedido de chave quente).
Private: respostas pessoais - no perímetro através de edge-compute (ESI/kv) ou para-tenente em dinheiro.
3. 3 Anti-tempestade
Request coalescing - contrair pedidos simultâneos de miss.
Serve-state - Dar um objeto obsoleto quando a oridgina falhar.
Background revalidação - Atualizar no fundo.
4) HTTP/2-3, TCP/TLS e retorno inicial
HTTP/2: multiplex, compactação de cabeçalhos; Limite «max concurrent streams», grandes títulos.
HTTP/3 (QUIC): grande redução do TTFB em perdas móveis/elevadas; acompanhe as liminares Inicial e Retry.
TLS 1. 3: 1-RTT handshake; OCSP stapling; HSTS.
0-PTT: Somente para Idumpotentes 'GET' e se os riscos de replay forem considerados.
103 Early Hants: primeiros 'Link: rel = proload' para recursos críticos.
Preconnect / DNS-prefetch: `<link rel="preconnect" href="https://cdn. example">`.
5) Edge-compute e «personalização fina»
Na borda: censo de títulos, geo/tenante-fixação, marcação A/B, personalização fácil sem solicitação de origina.
Regra: não armazenar PII em nós POP; armazenar apenas as unidades/dados públicos.
6) Otimização de mídia e formatos
Imagens: conversão automática em WebP/AVIF, resize-on-edge, 'srcset/sizes', 'lazyload'.
Compressão: Brotli para texto (HTML/CSS/JS/JSON), gzip fallback.
Vídeo: HLS/DASH, CDN-segment caching, 'proload = metadata', pôster.
Fontes: subset + 'fort-display: swap'; Hospedar com um longo dinheiro.
CSS crítico: primeira tela inline; o resto é async.
7) pattern API e cachê-lo
Idempotent GET - Cacique as chaves de consulta (incluindo a versão de dados).
ETAG: forte hash de carga útil + 'If-None-Match'.
O Controle de Surrogate (CDN) é diferente do cliente 'Cachê-Controle'.
Signed OUTuls - para a estática/mídia privada.
GraphQL: normalize a chave de kesh por operação/variável; use partial caching/resolver-dinheiro.
WebSockets: Para o real-time - Reduza as mensagens, comprime (permessage-deflate), e mantenha os shards WS mais próximos do usuário.
8) Exemplos de configuração
8. 1 NGINX (oridgin: armazenamento API-GET)
nginx
We give SWR and ETag location/api/v1/catalog/{
proxy_cache api_cache;
proxy_cache_key "$scheme$request_method$host$uri$is_args$args";
proxy_cache_valid 200 5m;
proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504;
add_header Cache-Control "public, s-maxage=300, stale-while-revalidate=600, stale-if-error=86400";
add_header ETag $upstream_http_etag;
proxy_ignore_headers Set-Cookie; # do not break the Set-Cookie proxy_hide_header cache;
proxy_pass http://catalog;
}
8. 2 Fastly VCL (SWR, coalescing, ignore cookies)
vcl sub vcl_recv {
set req. hash_ignore_busy = true; # coalescing if (req. url. qs ~ "^(?!.(lang v)=)") { remove req. url. qs; }
if (req. http. Cookie) { remove req. http. Cookie; }
}
sub vcl_backend_response {
set beresp. ttl = 300s;
set beresp. stale_if_error = 86400s;
set beresp. stale_while_revalidate = 600s;
if (beresp. http. Set-Cookie) { unset beresp. http. Set-Cookie; }
}
8. 3 Cloudflare (Transform Rules, Cache Rules, Early Hints — псевдо)
json
{
"cache_rule": {
"if": "http. request. uri. path matches \"/assets/.\"",
"action": {"cache": {"eligibility":"eligible", "ttl": 31536000}}
},
"transform_rule": {
"set_headers": [{"name":"Cache-Control","value":"public, s-maxage=300, stale-while-revalidate=600"}]
},
"early_hints": {"enable": true}
}
9) Redes móveis e internet «instável»
Use o HTTP/3 agressivamente; reduz o tamanho do caminho crítico (HTML + critical CSS <14 KB).
Priority H2/H3: Priorize (HTML→CSS→JS→media mais tarde).
Política de retração com jitter, idempotency para API.
Size-budgets e bandling: código-splitting, deferred JS, remoção CSS/JS não utilizado.
10) Observabilidade e SLO
RUM: TTFB, LCP, INP, CLS por região/ASN/tenentes; distribuição p95/p99.
Sintética: rota de controle «/health/cdn »por POP.
Métricas em dinheiro: hit-ratio overall e per-key; origin fetch rate; coalescing savings.
Alerts: queda do hit-ratio, crescimento do origin-egress, degradação do H3, 5xx por shield.
11) Especificidades do iGaming/Finanças
Diretórios de jogos/coeficientes: curto 's-maxage' + SWR; region-aware ключ (`tenant|region|lang`).
Picos de evento (jogos, partidas): aquecimento de cachê (pré-warm), «congelamento» de pesadas personalizações, fontes mirror.
Pagamento/Gabinete: Não armazenamento privado, mas acelere via H3 + edge-TLS e região próxima.
Jurisdição: domínios/caminhos para-região separados; Controle 'Vary: X-Region'.
12) Antipattern
'Vary:' para tudo em sequência; a chave em dinheiro depende de cookies/cabeçalhos extras.
A ausência do SWR/SIE → «ecrãs pretas» em casos de falhas curtas.
Limpa o cachê em todo o lado em vez de uma deficiência de ponto em marcas/chaves.
Recursos sem revisão de nomes e com 'max-age = 0'.
Deny-cachê global para 'Autoorization' mesmo onde o público é entregue.
Falta de coalescing → tempestade na oridgina.
Personalização prematura «pesada» no POP.
13) Folha de cheque pró-prontidão
- Anycast POP + tiered/shield; health verificação e origin failover.
- As chaves do cachê são mínimas; ignorar query/cookies a mais; 'Surrogate-Control'.
- SWR/SIE incluídos, coalescing ativo; serve-state com erros.
- HTTP/3 está incluído; TLS 1. 3; 103 Early Hants está configurado para recursos críticos.
- Imagens: AVIF/WebP, resize-on-edge; Brotli para textos.
- API-GET с ETag/Last-Modified; Idimpotência/retrai; Não configure perfis privados.
- Precisnect para domínios estáticos; CSS crítico inline.
- Métricas: hit-ratio, origin-egress, TTFB/LCP p95, H3, por região/tenente.
- Plano de aquecimento do cachê antes dos eventos; deficiência de ponto (tags).
- Documentação Vary/keys/TTL; playbook incidentes (queda hit-ratio).
14) TL; DR
Reduza as caminhadas a um mínimo de tiered/shield + cache-keys + SWR/SIE + coalescing. Inclua HTTP/3/TLS 1. 3, use 103 Early Hants e precisnect. Comprimir e converter mídia na borda, inlinar CSS crítico. Para API - ETag, cuidadoso 'Vary', idempotação e armazenamento inteligente de 'GET'. Mede hit-ratio, TTFB/LCP p95, origin egress e aqueça o dinheiro com antecedência nos picos.