Programacao · web · desempenho
O que e uma CDN?
Uma CDN (content delivery network, rede de distribuicao de conteudo) e um conjunto de servidores distribuidos por muitos locais que guardam copias do teu conteudo estatico - imagens, CSS, JavaScript, tipos de letra, videos - e servem cada visitante a partir de um servidor geograficamente proximo. O objetivo e simples: encurtar a distancia que um pedido tem de percorrer, para que as paginas carreguem mais depressa e o teu servidor principal trabalhe menos. Se o teu site esta alojado numa unica cidade, um visitante do outro lado do planeta ja nao tem de atravessar o mundo para cada ficheiro.
O problema que resolve
Quando o teu site vive num unico servidor, cada pedido - de cada pais - tem de chegar a essa unica maquina e voltar. A distancia custa tempo: quanto mais longe esta o visitante, mais latencia se acumula, e mais carregado fica o teu servidor a medida que o trafego cresce. Uma CDN responde a ambos os problemas colocando copias dos teus ficheiros mais perto das pessoas e retirando a maior parte da carga de pedidos da tua origem.
Servidores edge e pontos de presenca
Os servidores que uma CDN usa para colocar em cache e servir conteudo sao muitas vezes chamados servidores edge, situados na "borda" (edge) da rede, perto dos utilizadores, em vez de na tua origem central. Grupos destes ficam em centros de dados por todo o mundo, por vezes chamados pontos de presenca (PoP). Quando alguem pede um ficheiro, a CDN encaminha-o para um servidor edge proximo em vez da tua origem. Como esse servidor esta perto, a ida e volta e mais curta e a entrega mais rapida.
Cache hit, cache miss e a origem
O mecanismo central de uma CDN e a cache. A primeira vez que se pede a um servidor edge um ficheiro que ele nao tem, isso e um cache miss: o edge obtem o ficheiro do teu servidor de origem, envia-o ao visitante e guarda uma copia. O visitante seguinte nesse mesmo edge obtem um cache hit - o ficheiro ja esta la e e servido de imediato, sem tocar na origem de todo.
pedido -> servidor edge mais proximo
cache HIT -> serve a copia guardada (rapido, origem intacta)
cache MISS -> obtem da origem, serve, depois guarda para a proxima Por isso uma CDN acelera a entrega e alivia a origem: uma vez o conteudo em cache no edge, a maioria dos pedidos e servida sem nunca chegar ao teu servidor. Num pico de trafego, a rede edge absorve o grosso da carga.

TTL e invalidacao: manter a cache atualizada
Uma copia em cache nao pode viver para sempre, ou os visitantes continuariam a ver uma versao antiga apos atualizares um ficheiro. Dois mecanismos tratam disto:
- TTL (time to live): a cada item em cache e dada uma vida util, normalmente definida por cabecalhos de cache HTTP como
Cache-Control. Quando o TTL expira, o edge trata o item como desatualizado e volta a verificar a origem antes de o servir de novo. - Invalidacao (purga): quando implementas uma alteracao e nao podes esperar pelo TTL, dizes a CDN para descartar ficheiros especificos da cache, de modo que o pedido seguinte obtenha a versao fresca da origem. Um truque comum que evita qualquer purga e o cache busting - mudar o nome do ficheiro ou acrescentar uma versao como parametro, por exemplo
style.abc123.css, para que uma nova URL seja obtida fresca.
Conteudo estatico vs conteudo dinamico
As CDN brilham com o conteudo estatico: ficheiros iguais para todos e que mudam raramente, como imagens, folhas de estilo, scripts e downloads. Estes colocam-se em cache de forma limpa e podem ser servidos do edge durante muito tempo. O conteudo dinamico - um painel personalizado, ou uma resposta que depende de quem tem sessao iniciada - e mais dificil de colocar em cache, porque a resposta difere em cada pedido. As CDN modernas ainda ajudam aqui com funcionalidades como reutilizacao de ligacao e a execucao de pequenos pedacos de logica no edge, mas o ganho classico e maior continua a ser colocar em cache os recursos estaticos perto dos utilizadores.
Que mais faz habitualmente uma CDN
Alem da cache, a maioria das CDN inclui extras uteis. Costumam terminar o TLS (HTTPS) no edge e aplicar compressao para que os ficheiros viajem mais pequenos e cifrados. Muitas tambem adicionam protecao contra enxurradas de trafego e absorvem a carga que de outro modo atingiria a tua origem. Entre as CDN reais e muito usadas estao Cloudflare, Fastly e Akamai; para bibliotecas de codigo aberto, CDN publicas como jsDelivr servem pacotes diretamente de uma rede edge global.
Onde uma CDN encaixa com o teu alojamento
Uma CDN nao substitui o teu alojamento - fica a frente dele. O teu servidor ou VPS continua a ser a origem que guarda os ficheiros reais e executa a tua aplicacao; a CDN coloca em cache e entrega copias das partes cachaveis. Tambem se combina naturalmente com um proxy reverso a frente da tua app: o proxy encaminha e termina o TLS na tua origem, enquanto a CDN trata da camada edge global. Continuas a precisar de um alojamento de origem solido por baixo de tudo.
FAQ
Uma CDN substitui o meu alojamento? Nao. O teu alojamento e a origem que armazena os ficheiros reais e executa a tua app. Uma CDN coloca em cache e serve copias das partes estaticas cachaveis a partir de servidores perto dos teus visitantes. Precisas de ambos: uma origem fiavel mais a camada edge a frente dela.
Qual e a diferenca entre um cache hit e um cache miss? Um hit significa que o servidor edge ja tem o ficheiro pedido em cache e serve-o de imediato. Um miss significa que nao o tem, por isso obtem o ficheiro da tua origem, serve-o e guarda uma copia para que o pedido seguinte seja um hit.
O que e o TTL? Time to live: durante quanto tempo um item em cache e considerado fresco, normalmente definido por cabecalhos de cache HTTP. Quando o TTL expira, o edge volta a verificar a origem antes de servir o item de novo, de modo que as atualizacoes acabam por chegar a todos.
Uma CDN pode colocar em cache conteudo dinamico? Em parte. O conteudo que difere por utilizador e dificil de colocar em cache diretamente, mas as CDN aceleram-no na mesma com reutilizacao de ligacao, compressao e logica no edge. O ganho maior e mais simples continua a ser colocar em cache recursos estaticos como imagens, CSS e JavaScript perto dos utilizadores.
O servidor de origem por tras da tua CDN
Uma CDN coloca em cache copias do teu conteudo, mas continua a precisar de um verdadeiro servidor de origem que guarde os ficheiros fonte e execute a tua app. A Infomaniak - um fornecedor suico que respeita a privacidade - oferece VPS e servidores cloud para usares como essa origem, e depois colocas uma CDN a frente para servir os recursos estaticos a partir do edge.
Ver Infomaniak Cloud →Link de afiliado - ajuda a manter estes guias gratuitos.