Sotto attacco? EN Prova gratis
Blog · CDN e velocità

Sito lento? Il tempo al primo byte e come la cache lo abbatte

Il tempo al primo byte (TTFB) misura quanto il server ci mette a iniziare a rispondere. Cos'è, come misurarlo in un minuto, perché il tuo sito è lento e come la cache lo porta da centinaia a pochi millisecondi.

Quando un sito "sembra lento", la colpa è spesso di un numero che pochi guardano: il tempo al primo byte, in inglese Time To First Byte o TTFB. È il tempo che passa da quando il browser chiede una pagina a quando arriva il primo pezzo della risposta. Finché non arriva, il visitatore guarda una pagina bianca.

Cosa c'è dentro il tempo al primo byte

Il TTFB somma diverse attese:

  1. DNS: trovare l'indirizzo del sito;
  2. connessione: raggiungere il server, e più è lontano più ci vuole;
  3. HTTPS: lo scambio di chiavi per la connessione cifrata;
  4. attesa del server: il tempo che il server impiega a preparare la pagina. Su un CMS significa avviare PHP, caricare plugin e interrogare il database.

La quarta voce è quasi sempre la più grande, ed è quella su cui si può fare di più.

Come misurarlo in un minuto

Dal terminale, con curl:

curl -o /dev/null -s -w "DNS %{time_namelookup}s\nConnessione %{time_connect}s\nHTTPS %{time_appconnect}s\nPrimo byte %{time_starttransfer}s\n" https://www.tuosito.it/

Dal browser: apri gli strumenti per sviluppatori (F12), scheda Rete, ricarica la pagina e clicca sulla prima richiesta. Alla voce Tempi trovi "In attesa della risposta del server": è l'attesa del server.

Come regola pratica:

Tempo al primo byte Giudizio
Sotto 200 ms Buono
200 – 600 ms Migliorabile
Sopra 600 ms Lento: il visitatore se ne accorge

Misura più volte e da posti diversi: la prima richiesta dopo un periodo di calma è spesso più lenta, perché le cache del server sono "fredde".

Perché il tuo sito è lento

La soluzione più efficace: la cache

Una pagina in cache è già pronta: nessuno deve prepararla. Ci sono due livelli.

Cache sul server. Un plugin di cache o la cache dell'hosting salvano la pagina finita e la riconsegnano alle visite successive. L'attesa del server scende di molto, ma la richiesta arriva comunque fino al tuo server, magari da lontano.

Cache sulla CDN. La pagina e i file stanno sui nodi, vicino ai visitatori. La richiesta non arriva nemmeno al tuo server: risponde il nodo, in pochi millisecondi.

Un caso reale: Maremma24

Maremma24 è un giornale online che usa 1PrimeCDN. Abbiamo misurato l'attesa del server del sito, dagli stessi punti, con e senza la CDN:

Punto di misura Senza CDN Con 1PrimeCDN
Gravelines 11,6 ms 1,0 ms
Falkenstein 7,7 ms 0,7 ms
Limburg 3,7 ms 0,3 ms

Il server di Maremma24 era già veloce di suo; con la CDN l'attesa è scesa di circa dieci volte, perché risponde il nodo con la pagina già pronta. Su siti con server più lenti la differenza è ancora più grande. Nel pannello di 1PrimeCDN la sezione Performance fa la stessa misura sul tuo sito, da tutti i nodi.

Come dire alla CDN cosa tenere in cache

Il modo più pulito è che sia il sito a dirlo, con l'intestazione Cache-Control:

Cache-Control: public, max-age=300

significa "questa pagina si può tenere in cache per 5 minuti". Per i file che cambiano nome a ogni versione (per esempio style.3f2a.css) si può arrivare a un anno:

Cache-Control: public, max-age=31536000, immutable

Le pagine personali devono invece dire di non essere messe in cache:

Cache-Control: private, no-store

Su 1PrimeCDN puoi lasciar decidere al sito oppure impostare una durata per tutta la zona. In ogni caso le pagine richieste da chi ha fatto l'accesso (con un cookie di sessione) vanno sempre al server, mentre immagini, CSS e JavaScript restano in cache per tutti.

Quando cambia qualcosa: svuota la cache

Se pubblichi un articolo o cambi un prezzo e la pagina resta vecchia, basta svuotare la cache: di tutta la zona o solo di alcuni indirizzi, dal pannello o via API, così il tuo CMS può farlo da solo a ogni modifica. Su 1PrimeCDN lo svuotamento risulta completato solo quando l'hanno confermato tutti i nodi.

In sintesi

Se il sito è lento all'improvviso e non hai cambiato niente, potrebbe non essere colpa del server: leggi come capire se il sito è sotto attacco DDoS.

Vuoi un sito che regge anche sotto attacco?

1PrimeCDN mette il tuo sito dietro 8 nodi europei con cache, HTTPS e lo Shield contro bot e attacchi, a canone fisso dal 9,90 € al mese.

Parliamone