Server HTTP dapat mengirim response informasional 103 Early Hints sebelum response final selesai dibuat. Client dapat bertindak atas field yang sesuai pada interim message tersebut, misalnya memulai preload yang disebut oleh Link, walaupun status code, header field, dan representasi final masih belum tersedia.
Hal ini sengaja memisahkan speculative work dari authoritative response semantics. Interim response dapat memindahkan sebagian preparation lebih awal, tetapi tidak dapat menggantikan final response atau menentukan maknanya.
Informational response tidak mengakhiri exchange
Status code 103 termasuk kelas informasional 1xx. Ia mendahului final response, bukan menggantikannya.
Exchange yang disederhanakan dapat terlihat seperti berikut:
HTTP/1.1 103 Early Hints
Link: </app.css>; rel=preload; as=style
HTTP/1.1 200 OK
Content-Type: text/html
Link: </app.css>; rel=preload; as=style
<!doctype html>
...Header block pertama memberikan informasi yang dapat membantu preparation client. Response kedua bersifat final dan membawa semantik yang mengatur pemrosesan normal terhadap hasil request.
RFC 8297 mengizinkan client mengevaluasi field dari 103 secara speculative. RFC tersebut juga menyatakan bahwa evaluasi ini, selain untuk performance optimization, tidak boleh mengubah pemrosesan final response. Boundary ini mencegah optimization channel berubah menjadi sumber authoritative response metadata kedua.
Hint dapat berguna sebelum menjadi pasti
Server mengirim field yang diperkirakan kemungkinan besar akan muncul dalam final response. Perkiraan tersebut bukan janji bahwa setiap hinted field akan diulang tanpa perubahan.
Hal ini penting ketika response generation memiliki dua timing layer. Routing layer, template manifest, atau cached metadata dapat mengetahui probable dependency dengan cepat, sementara application work untuk menghasilkan final response membutuhkan waktu lebih lama. Early Hints dapat mengekspos prediksi yang stabil tanpa memaksa server menunggu final response selesai dibangun.
Komputasi final dapat menghasilkan hasil berbeda. Resource yang disebut dalam 103 mungkin tidak muncul di final response, atau final response dapat berisi link yang sebelumnya tidak di-hint. Protocol mengizinkan perbedaan tersebut.
Optimization-nya karena itu bersifat asymmetrical: prediksi yang benar dapat mempercepat pekerjaan berguna, sedangkan prediksi yang salah dapat memicu speculative work yang tidak dibutuhkan final response.
Link preload memindahkan resource acquisition melewati boundary final-header
Penggunaan umum 103 adalah field Link dengan rel=preload. Client yang mendukungnya dapat mulai mengambil resource yang direferensikan setelah menerima informational response, tanpa menunggu final response header atau parsing HTML.
Tanpa early hint, dependency mungkin baru terlihat setelah urutan berikut:
request page
|
wait for final response headers
|
receive or parse representation
|
identify dependency
|
request dependencyEarly hint dapat mengekspos dependency sebelum final response siap:
request page
|
receive 103 with Link
|--------------------> speculative dependency request
|
final response still being preparedMekanisme ini mengubah discovery time, bukan application semantics milik dependency tersebut. Preload fetch dapat membuat byte tersedia lebih awal, tetapi final document dan policy-nya tetap menentukan apakah dan dalam konteks apa byte tersebut digunakan.
Spekulasi yang salah memiliki biaya nyata
Hinted preload dapat memakai resource jaringan, connection, server, dan client. Jika final response tidak menggunakan resource tersebut, pekerjaan itu mungkin tidak memberi manfaat pada aplikasi.
Biayanya tidak terbatas pada transferred byte. Speculative request dapat bersaing dengan request lain untuk connection capacity atau client scheduling priority. Dampak persisnya bergantung pada protocol version, browser behavior, prioritization, cache state, dan kondisi jaringan, sehingga keberadaan response 103 saja tidak membuktikan adanya peningkatan latency.
Karena itu pemilihan hint adalah persoalan precision. Resource yang bergantung pada late application state adalah candidate yang lebih lemah daripada resource yang kebutuhannya sudah stabil pada saat interim response dibuat.
Constraint yang sama berlaku untuk stale metadata. Intermediary dapat memiliki informasi dari response sebelumnya yang memprediksi link untuk response berikutnya, tetapi prediksi itu dapat berbeda dari final origin response. RFC 8297 secara eksplisit mengizinkan beberapa response 103, termasuk skenario yang melibatkan intermediary, tanpa menjadikan salah satu interim field set sebagai sumber otoritas.
Field yang tidak ada tidak membawa prediksi negatif
Response 103 dapat hanya berisi subset field yang diperkirakan akan muncul pada final response. Tidak adanya field pada interim response tidak berarti field tersebut kecil kemungkinan muncul kemudian.
Properti ini penting untuk incremental response construction. Server dapat mengirim satu hint berguna segera setelah tersedia tanpa membutuhkan preview lengkap final header.
Artinya client tidak dapat memperlakukan interim header block sebagai provisional full response schema. Early Hints adalah additive signal untuk speculation, bukan deklarasi lengkap yang menjadi pembanding final response.
Security policy dapat membatasi speculative fetch
Early resource acquisition terjadi sebelum final response processing, sehingga policy handling juga membutuhkan boundary eksplisit. Browser dapat menerapkan Content-Security-Policy yang dikirim bersama Early Hints ketika memutuskan apakah resource yang disebut boleh di-preload.
Final response dapat membawa policy yang berbeda. Resource yang sudah di-fetch karena early policy mengizinkan preload tidak otomatis memperoleh izin untuk ikut dalam rendering di bawah final policy yang lebih ketat. Mengambil resource dan mengizinkan penggunaan berikutnya adalah dua keputusan berbeda.
Perbedaan ini mencerminkan desain protocol secara lebih luas: early processing dapat memulai preparation yang reversible atau discardable, sementara final response semantics tetap menjadi sumber otoritas untuk hasil request.
Redirect memperlihatkan prediction boundary
Server dapat mengirim Early Hints lalu kemudian menghasilkan redirect alih-alih representasi yang semula diperkirakan. Transisi ini memperlihatkan sifat speculative mekanisme dengan sangat jelas.
Aturan browser memperhitungkan perubahan origin karena hint yang terkait satu request context tidak boleh diam-diam menjadi authoritative metadata untuk origin berbeda yang dicapai kemudian. Pemrosesan browser saat ini membuang early hint ketika request berakhir pada cross-origin redirect.
Konsekuensi yang terlihat adalah early action mungkin sudah dimulai tetapi hasilnya belum tentu dapat digunakan setelah routing final diketahui. Timing awal menciptakan peluang, bukan kepastian.
Metric harus membedakan interim byte dan final header
Early Hints juga mengubah arti observasi timing. Metric yang disebut time to first response byte dapat mencatat kedatangan 103, bukan kedatangan final response header.
Itu merupakan pengukuran valid terhadap aktivitas response pertama, tetapi menjawab pertanyaan timing berbeda dari interval sampai final response dimulai. Sistem yang memperkenalkan Early Hints karena itu dapat menunjukkan first-byte timestamp lebih awal walaupun final response generation tidak berubah.
Untuk browser performance data, timing attribute terpisah dapat merepresentasikan interim response pertama dan final response header. Memisahkan event tersebut mencegah application-response completion secara keliru dikaitkan dengan informational message.
Boundary yang berguna adalah spekulasi tanpa otoritas
103 Early Hints membentuk protocol channel sempit untuk pekerjaan yang aman dimulai sebelum final response diketahui. Nilainya berasal dari memindahkan preparation tertentu melewati latency boundary sambil mempertahankan final response sebagai semantic authority.
Pemisahan ini sekaligus menentukan failure mode-nya. Prediksi buruk dapat membuang pekerjaan, hint yang hilang tidak mengatakan apa pun tentang header berikutnya, redirect dapat membatalkan context awal, dan keputusan policy awal tidak menggantikan final policy. Karena itu mekanisme ini paling kuat ketika hinted information cukup stabil untuk membenarkan speculation tetapi tidak perlu dianggap final.