LOG 07 · INFRAESTRUTURA

Implementação no Cloudflare Pages

Builds estáticos enviados diretamente para a rede de borda da Cloudflare via Wrangler — tempos de primeiro byte rápidos em todo o mundo, e nada em execução que precise de uma fatura de servidor ou de um calendário de correções.

Publicado · Atualizado

A implementação é um artefacto de build, não uma operação

Como o site compila para ficheiros estáticos, a implementação consiste no `wrangler` a enviar esse diretório de saída para a rede de borda da Cloudflare — sem servidor para aprovisionar, sem runtime para manter corrigido, sem configuração de escalabilidade que se possa errar sob um pico de tráfego. Todo o site é replicado para localizações de borda em todo o mundo, para que cada visitante seja servido a partir da localização fisicamente mais próxima.

Para o trabalho com clientes, isto importa para além da velocidade bruta: um site estático alojado na borda tem uma superfície de ataque drasticamente menor e nenhum custo de servidor contínuo que escale de forma imprevisível com o tráfego — uma preocupação a menos para o cliente orçamentar ou vigiar após o lançamento.

Os cabeçalhos fazem parte do build

Num alojamento estático não sobra código de aplicação para definir os cabeçalhos de resposta, por isso passam a ser um ficheiro que viaja com o build. Um ficheiro `_headers` declara o conjunto de segurança — nosniff, opções de frame, política de referrer, HSTS, uma política de permissões — mais a política de cache, que é a única coisa que varia mesmo consoante o tipo de ficheiro: o resultado do build com hash no nome pode ser imutável durante um ano, as imagens um mês, e o próprio HTML nada.

Há uma aresta que vale a pena conhecer. O Cloudflare Pages aplica todas as regras que correspondem a um pedido e acrescenta os cabeçalhos, em vez de deixar ganhar a mais específica. Repetir um cabeçalho de segurança dentro de um bloco por extensão não reforça a regra global — emite esse cabeçalho duas ou três vezes na mesma resposta, e um cabeçalho de valor único repetido é lido por um scanner como ausência total de proteção. Declare-o uma só vez, globalmente, e deixe os blocos mais específicos levarem apenas o que muda de facto.

Serviços que o utilizam