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.