HTTP/2 & HTTP/3
Evolusi HTTP protocol membawa peningkatan performance signifikan.
HTTP/1.1 — Masalah
- Head-of-line blocking — Hanya 1 request per TCP connection pada saat yang sama
- Workaround mahal — Domain sharding, sprite sheets, concatenation
- Browser limit: 6 parallel connections per domain
HTTP/2 — Solusi
- Multiplexing — Banyak request/response di satu TCP connection secara bersamaan
- Header compression (HPACK) — Mengurangi overhead header yang repetitif
- Server Push — Server bisa mengirim resource sebelum diminta (deprecated di beberapa browser)
- Prioritization — Client bisa mengatur prioritas request
HTTP/3 — Evolusi Lanjut
- QUIC protocol — Dibangun di atas UDP (bukan TCP)
- No head-of-line blocking — Packet loss di satu stream tidak block stream lain
- 0-RTT connection — Koneksi ulang lebih cepat (untuk returning visitor)
- Connection migration — Berpindah dari WiFi ke 4G tanpa reconnect
Implikasi untuk Developer
Dengan HTTP/2+, beberapa optimasi HTTP/1.1 menjadi anti-pattern:
- Jangan bundle semua JS jadi satu file besar — banyak file kecil lebih baik
- Jangan sprite sheets — individual images bisa di-multiplex
- Jangan domain sharding — satu domain lebih baik (reuse connection)