Perintah dan konteks
Jelaskan bagaimana peramban mengekspresikan prioritas sumber daya, bagaimana server dan perantara bertindak berdasarkan prioritas tersebut, dan mengapa petunjuk prioritas (priority hint) tidak dapat menjamin bahwa suatu permintaan selesai lebih dulu. Bahas field Priority RFC 9218, urgency dan incremental, serta hubungkan dengan model ketergantungan (dependency) dan bobot (weight) HTTP/2 yang lebih lama.
Apa yang sedang diuji oleh pewawancara
- Apakah Anda membedakan preferensi penjadwalan dari SLA.
- Apakah Anda memahami batasan antara klien, origin, perantara, dan CDN.
- Apakah Anda dapat menghubungkan penjadwalan dengan keadilan (fairness), perebutan bandwidth (bandwidth contention), dan metrik pengguna.
- Apakah Anda mengetahui bahwa RFC 9113 telah mendepresiasi model persinyalan prioritas RFC 7540 dan RFC 9218 mendefinisikan alternatif yang dapat diperluas.
Pertanyaan klarifikasi sebelum menjawab
Konfirmasikan versi protokol, peramban atau SDK, jalur CDN, jenis sumber daya, rasio cache hit, dan metrik target. Tanyakan apakah prioritas tersebut merupakan petunjuk klien atau keputusan server yang harus dikomunikasikan ke hilir; jalur penelusuran kesalahan (debugging) berbeda.
Kerangka jawaban 30 detik
RFC 9218 mendefinisikan skema penentuan prioritas HTTP yang dapat diperluas. Field Priority pada permintaan atau respons dapat mengekspresikan urgency=0 hingga 7 dan apakah pengiriman bersifat inkremental; nilai yang lebih rendah umumnya lebih mendesak. Ini adalah masukan bagi scheduler, bukan SLA: server atau perantara dapat menyusun ulang, menggabungkan, menunda, atau mengabaikannya. Karena pohon ketergantungan dan model bobot asli HTTP/2 telah didepresiasi, saya akan memvalidasi hasilnya dengan waterfall peramban, origin, dan CDN yang sebenarnya.
Pembahasan mendalam langkah demi langkah
1. Apa yang diekspresikan oleh field
urgency menyediakan urgensi relatif, sedangkan incremental menyatakan apakah suatu respons cocok untuk pengiriman progresif. Contoh:
Priority: u=1, iIni meminta pengiriman inkremental yang relatif mendesak; ini tidak mengharuskan preemption terhadap setiap aliran (stream) lainnya.
2. Siapa yang menerapkannya
Klien dapat mengirim preferensi dalam sebuah permintaan, dan server dapat memperbarui nilai dalam sebuah respons untuk pemrosesan hilir. Origin, reverse proxy, dan CDN dapat menjadwalkan ulang menggunakan batas koneksi, antrean, status cache, bandwidth, dan keadilan. Protokol mendefinisikan sinyal dan semantik, bukan satu algoritma wajib di setiap hop.
3. Mengapa keadilan (fairness) itu penting
Selalu melayani urgensi tertinggi dapat membuat unduhan berprioritas rendah mengalami kelaparan (starvation). Scheduler mungkin memerlukan konkurensi terbatas (bounded concurrency), kuota, penuaan (aging), atau perilaku round-robin; respons inkremental juga menukar byte pertama yang cepat dengan waktu penyelesaian.
Contoh jawaban berkualitas tinggi
Saya memperlakukan RFC 9218 sebagai lapisan petunjuk penjadwalan yang dibagikan di seluruh implementasi HTTP. Klien memberikan preferensi urgensi dan inkremental berdasarkan tujuan rendering atau bisnis, sementara server dan perantara membuat keputusan akhir dari antrean, status cache, dan bandwidth mereka. Priority bukanlah janji bahwa suatu permintaan akan selesai lebih dulu, dan tidak dapat melewati kontrol kemacetan (congestion control) atau multipleksing koneksi. RFC 9113 mendepresiasi persinyalan ketergantungan dan bobot HTTP/2, sehingga mengubah pohon lama tidak cukup untuk memprediksi perilaku modern. Untuk diagnosis, saya akan mempertahankan kondisi cache dan jaringan tetap konstan, memeriksa header, antrean, dan waterfall dari peramban ke CDN dan CDN ke origin, lalu membandingkan LCP, INP, latensi ekor (tail latency), dan pengujian dengan bandwidth terbatas. Jika perantara menghapus atau menimpa field tersebut, batasan itu harus dikonfigurasi atau diterima.
Kesalahan umum
- Menyebut
urgency=0sebagai prioritas teratas yang mutlak dan preemptive. - Mengklaim bahwa setiap peramban, server, dan CDN menggunakan scheduler yang sama.
- Memperlakukan pohon ketergantungan RFC 7540 sebagai konfigurasi yang diperlukan untuk RFC 9218.
- Hanya mengukur latensi lokal tanpa memisahkan cache hit, perebutan bandwidth, dan penulisan ulang perantara.
- Hanya melihat time to first byte dan mengabaikan penyelesaian respons penuh serta keadilan.
Pertanyaan lanjutan dan tanggapan
Bagaimana jika perantara tidak mendukung field Priority?
Perlakukan itu sebagai observasi kapabilitas dan pertahankan antrean default yang aman. Periksa apakah konfigurasi perantara, pemartisian sumber daya, atau konkurensi terbatas dapat meningkatkan critical path; jangan perlakukan petunjuk klien sebagai bukti penegakan.
Bagaimana Anda membuktikan bahwa penentuan prioritas meningkatkan UX?
Jalankan perbandingan terkontrol dengan protokol, status cache, bandwidth, dan kumpulan permintaan yang sama. Tangkap waterfall, field per-hop, LCP, INP, waktu byte pertama, dan latensi penyelesaian ekor di bawah kondisi warm cache dan bandwidth terbatas.
Bagaimana hubungan fetchpriority dengan field Priority?
fetchpriority mengekspresikan preferensi pengambilan sumber daya dalam API halaman. Suatu implementasi dapat memetakannya ke penentuan prioritas permintaan, tetapi scheduler peramban, server, dan perantara tetap memutuskan hasilnya. Verifikasi field yang dimunculkan dan perilaku jaringan daripada hanya mengandalkan atribut DOM.