Cloudflare

Francesco Ciannavei

Cloudflare

Uso Cloudflare come infrastruttura di tutti i giorni: un image CDN che ho scritto io su Workers e R2, un tunnel Zero Trust che porta online i backend di casa mia, Turnstile sul form contatti, i Workers per il frontend e i domini su Cloudflare DNS.

Workers: il frontend sull'edge

Il frontend di questo sito è in Astro e, grazie all'adapter dedicato, gira direttamente su Cloudflare Workers: le pagine sono generate e servite dalla edge location più vicina all'utente. L'approccio edge-first non ha cold start percepibili e scala da solo.

Un image CDN su Workers e R2

Il CDN che serve le immagini di questo sito è un Cloudflare Worker che ho scritto in TypeScript. Quando arriva una richiesta controlla se una versione ottimizzata è già nel bucket R2: se c'è, la serve dalla cache; altrimenti prende l'immagine dall'origine, la ridimensiona e la converte in un formato più leggero, poi la salva su R2.

La conversione segue l'header Accept del browser: AVIF se è supportato, altrimenti WebP. La codifica AVIF consuma molta memoria, quindi sopra i 5 milioni di pixel il Worker passa a WebP per restare nei 128 MB che Cloudflare concede a un Worker; se qualcosa va storto, serve l'immagine originale. Dimensioni e qualità arrivano dai parametri w, h e quality, arrotondati a valori prefissati perché la cache non si riempia di varianti quasi identiche, e ogni risposta porta un header X-Cache. Il repository è pubblico, con documentazione e un pulsante per installarlo sul proprio account.

Zero Trust: i backend di casa online senza esporre un IP

I miei backend girano su server di casa, ma non espongo mai un IP pubblico. Un tunnel Cloudflare Zero Trust raggiunge l'API del CMS in Laravel e pubblica online le mie applicazioni, lasciando tutto il traffico passare da Cloudflare: così i dati restano sui miei server e dietro la protezione di Cloudflare.

Turnstile sul form contatti

Il form contatti di questo sito è protetto da Cloudflare Turnstile, un'alternativa ai CAPTCHA tradizionali che di solito non chiede nulla all'utente. Il token viene verificato lato server, nell'API Laravel, con lo stesso controllo della guida in PHP che ho scritto.

DNS

Tutti i miei domini sono gestiti su Cloudflare DNS, davanti ai servizi qui sopra.

Rating
8/10

Dove l'ho usato: