HTTP/1.1 apriva una manciata di connessioni e su ciascuna mandava una richiesta per volta, perciò ogni file in più costava un posto in coda. HTTP/2 le manda tutte insieme su un'unica connessione, e quel solo cambiamento rende diverse vecchie ottimizzazioni inutili o dannose.
Attivalo
listen 443 ssl;
http2 on;
In tutti i browser richiede TLS, quindi arriva con il certificato che hai già. Non serve cambiare altro.
Cosa smette di essere vero
Unire tutti gli script in un solo file, e i fogli di immagini CSS, esistevano per ridurre il NUMERO delle richieste. Sotto HTTP/2 quel numero non costa quasi nulla — e un unico pacchetto grande significa che cambiare una riga lo invalida tutto, per ogni visitatore.
- Distribuisci più file piccoli, che vanno in cache ciascuno per conto proprio.
- Non spargere su più domini: era un modo per ottenere più connessioni parallele e ora costa una stretta di mano in più per ciascuno.
- Incorpora nella pagina solo ciò di cui il primo disegno ha davvero bisogno.
HTTP/3
listen 443 quic reuseport;
add_header Alt-Svc 'h3=":443"; ma=86400';
HTTP/3 viaggia su UDP. Il suo guadagno vero sta sulle reti inaffidabili — quelle mobili soprattutto — dove un pacchetto perduto non blocca più tutto il resto della connessione.
Verifica quale stai servendo
curl -sI --http2 https://yourdomain.com | head -1
curl -sI --http3 https://yourdomain.com | head -1
Nessuno dei due rende veloce una pagina lenta. Se il tempo al primo byte è di 900 ms il problema non è il protocollo, e passare a HTTP/3 non cambierà nulla che tu possa sentire.