GH GambleHub

CDN e edge-cajado

CDN e edge-cajado

1) Alvos

O CDN (Conteúdo Delivery Network) reduz a latência e a pressão sobre origin: armazena conteúdo dinâmico estático e condicional em nódulos edge, fornece escala, sustentabilidade e segurança (DDoS/WAF), adiciona uma lógica edge (reescrever respostas/solicitações, autenticação, A/B).

2) Modelo de cachê e chaves

Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`

Recomendado:
  • Normalizar query ('utm _' excluir, deixar 'v', 'lang', 'country' etc.).
  • Minimizar 'Vary' (por exemplo, 'Vary: Accept-Encoding, Aceitt-Language'), evitar 'Vary:'.
  • API - chave da rota + ID da versão (semver, hash, build id) + query/headers (por exemplo, 'X-Tenant').
  • Para páginas personalizadas, é edge-segmentação (por cookie/geo) ou Skip-Cache.

3) Políticas TTL e títulos

Títulos básicos:
  • `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
  • «Surrogate-Control» (se suportado) é uma política separada para CDN diferente do navegador.
  • 'ETag '/' Last-Modificed' - solicitações condicionadas (304) e poupança de tráfego.
  • Para privado, 'Cachê-Controle: Private, no-store', se não puder ser armazenado.
  • As API que permitem o armazenamento em dinheiro são 'Cachê-Controle: público, s-maxage = 60' + chave de versão.

Abordagem recomendada: recursos «eternos» (com fingerprint em nome de arquivo) → 'max-age = 31536000, imutável'; «páginas/JSON» → um TTL + SWR curto.

4) Deficiência: purge/soft-purge

Purge by URL: pontual.
Purge by tag/key: limpeza em grupo (use 'Surrogate-Key: products: 42 category: food').
Soft-purge: marca conteúdo «obsoleto», edge stale até a nova versão.
Aquecimento «quente»: Depois do pouso, dê as páginas principais das regiões.

5) Edge-pattern de desempenho

Stale-While-Revalidate: resposta rápida com cópia «obsoleta» + atualização de fundo.
Prefetch recursos críticos (proload, precisnect, dns-prefetch).
Composto: gzip/br (para texto), zstd se o CDN for suportado.
HTTP/2/3 (QUIC): multiplexe e menos latidão.
O TLS sessão resumpition e o OCSP stapling no perímetro.

6) Imagens e vídeos

Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Vídeo: HLS/DASH, fragmented MP4, origin-shield para reduzir «tempestades».
Serviços Thumbnail e signed OUTs para imagens privadas.

7) Segurança do perímetro

WAF: regras OWASP, bloqueio de países/ASN, rate-limits com chave (IP + cookies + token).
DDoS: L3/4 agrubbing, L7-Cheque, JS-Challengs/turnstyle.
URL/cookies assinados para recursos privados (vídeos/relatórios): TTL + HMAC/EdDSA.
Geo-fencing e complacência (por exemplo, proibição de regiões).

8) Edge-compute (lógica na borda)

Malas:
  • Personalização sem perfuração de cachê: segmentos (A/B), geo, linguagem em edge e conteúdo em dinheiro.
  • Reescrever respostas/títulos, rediretos, splits AB.
  • Autenticação de toques: verificação da assinatura JWT, referência à chave.
  • Canary por cookie/percent: parte do tráfego é para o novo backend.

Os exemplos de tecnologia são Cloudflare Workers/Durable Objects, Gastly Compute @ Edge, AWS Lambda @ Edge.

9) Multi-CDN e perímetro global

Razões: cobertura, SLA, custo, restrições regionais, isolamento de incidentes.
GSLB/Traffic Steering: por geo/latency/erros reais; health-checks de vários pontos vantage.
Um único esquema de chaves/cabeçalhos (Surrogate-Key), regras de purge sincronizadas.
Origin-shield é comum a todos os CDN para não «bater» origin em deficiências.

10) Logação e métricas

Recolha:
  • Hit ratio (cache, CDN → edge/origin), byte hit ratio.
  • Latency p50/p95/p99, error-rate por código/rota.
  • Origin fetches: RPS/bytes/erros (proteção contra falhas redundantes).
  • Gráficos regionais (por POP/ASN/país).
  • Integre-se ao Observabilidade: Prometheus (pull via exportadores), Grafana/OTel (push de edge-logs).

11) SEO и SPA/SSR

Páginas SEO com SWR e TTL curto - rápido e «fresco».
Sitemap/robots - Escondendo por muito tempo, mas admita soft-purge.
Service Worker: armazenamento em dinheiro offline, perfetch caminhos críticos, atualizações de destino.

12) Exemplos de configurações e cabeçalhos

12. 1 Perfis Cachê-Controle

Estática com fingerprint:

Cache-Control: public, max-age=31536000, immutable
HTML/SSR:

Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (vitrine em dinheiro):

Cache-Control: public, s-maxage=60
Vary: Accept-Encoding

12. 2 NGINX (origin) - normalização query/headers

nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^    &)v=([a-z0-9]+)(&    $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";

12. 3 Gastly VCL - soft-purge e chaves

vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}

12. 4 Cloudflare Workers - URL assinados

js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}

12. 5 Lambda @ Edge - opções geo

js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value          'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};

13) Dados privados e API

Nunca cante respostas privadas sem isolar a chave (para-usuário/para-token).
Use o Signed Cookies/Headers e 'Vary: Autorization' apenas com controle rigoroso (senão, cache-bust).
Uma alternativa segura é separar a camada pública (a ser armazenada) e os insumos privados (ESI/edge-composição).

14) Geo/regras de conteúdo

Restrições de licença: geo-deny em edge, playshalders em vez de bloquear origin.
Os banners etários/reguladores são renders por edge (não furar o dinheiro).

15) Anti-pattern

'no-cachê, no-store' para todo o site → perda de efeito CDN.
'Vary' em cabeçalhos instáveis (por exemplo, 'Usuário-Agente') → a cardealidade.
Limpar todo o cachê a cada lançamento.
TTL curto sem SWR → «tempestade» no origin.
As páginas pessoais são armazenadas sem segmentação/chave de token.
Falta de origin-shield → várias falhas paralelas.

16) Folha de cheque de implementação (0-45 dias)

0-10 dias

Categorizar recursos: estática/HTML/API.
Ativar gzip/br, HTTP/2/3, normalização query, 'Surrogate-Key'.
Digite SWR/IFE e purge básico.

11 a 25 dias

Edge-otimização de imagens (resize/formato), origin-shield.
URL assinados para mídia privada, perfis WAF/DDoS.
Dashboards: hit ratio, origin fetches, p95 POP.

26-45 dias

Multi-CDN ou estratégia GSLB, peso canário no perímetro.
Edge-compute para segmentação/AV/geo, soft-purge por chave.
Aquecimento automático e integração purge em CI/CD.

17) Métricas de maturidade

Byte hit ratio ≥ 85% para estática, ≥ 60% para dinâmica HTML/condicional.
Origin RPS é estável em picos (sem «tempestades»).
O p95 TTFB foi reduzido em ≥ 30% nas principais regiões.
% das respostas stale em incidentes> 90% (o usuário quase não notou).
Automação completa purge-a-chave no lançamento-pipline.

18) Conclusão

Um circuito CDN eficiente são chaves/TTL/opções, disciplina de deficiência e lógica edge. Adicione SWR/IFE, origin-shield, otimização de mídia e segurança rigorosa (WAF, URL assinados). Normalize as métricas e integre o purge em CI/CD - e você terá um perímetro rápido, econômico e sustentável preparado para as cargas de pico e os cisnes pretos.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.