Gesaan dan konteks
Asal boleh mengeluarkan 103 dengan Link sebelum respons akhir, tetapi trafik pengeluaran masih merentasi penamat TLS, pengimbang beban, proksi terbalik, dan CDN. Reka bentuk matriks keserasian hujung ke hujung, suis kenari, sandaran telus, dan pelan kebolehcerapan yang membuktikan respons 1xx sampai ke pelayar yang disokong.
Perkara yang diuji oleh penemu duga
Jawapan yang kukuh membezakan respons interim daripada respons akhir, memilih sumber berkeyakinan tinggi, membincangkan HTTP/2, HTTP/3, proksi, dan CDN, serta menyediakan sandaran telus apabila 103 diabaikan. Mereka juga merangkumi pembayang yang salah, risiko cache dan rentas-asal (cross-origin), serta pengukuran manfaat pengguna sebenar.
Soalan untuk penjelasan
- Berapa awal dan berapa yakin pelayan boleh mengetahui set sumber tersebut?
- Adakah klien, penamat TLS, proksi terbalik, dan CDN mengekalkan respons 1xx?
- Adakah sumber mempunyai versi, dan adakah
preconnectrentas-asal diperlukan? - Adakah sasaran LCP, jurang pasca-TTFB, atau penemuan CSS dan fon yang lebih awal?
- Bagaimanakah ralat, capaian cache, dan klien tanpa 103 diperhatikan dan dikendalikan?
Jawapan 30 saat
Sebelum respons akhir, saya akan menghantar 103 dengan set kecil pembayang Link berkeyakinan tinggi, kemudian menghantar respons akhir yang normal. Sumber menggunakan URL berversi dan sambungan rentas-asal dihadkan kepada domain yang dipercayai. Mengabaikan 103 mesti memastikan halaman tetap betul kerana HTML akhir masih merujuk kepada sumber. Saya akan membandingkan laluan yang disokong dan tidak disokong menggunakan surihan dan RUM untuk LCP, masa penemuan, bait pendua, dan ralat sebelum memperluaskan liputan.
Jawapan mendalam langkah demi langkah
Langkah 1: Fahami pemasaan
103 ialah respons interim bermaklumat dan mesti diikuti oleh respons akhir. Ia boleh membawa pembayang seperti Link: </app.css>; rel=preload; as=style semasa pelayan sedang memproses. Sama ada klien bertindak ke atasnya bergantung pada tindanan protokol, pelayar, dan dasar; ketepatan perniagaan tidak boleh bergantung padanya.
Langkah 2: Pilih sumber
Beri pembayang hanya untuk sumber yang hampir pasti, bersaiz munasabah, dan stabil: CSS kritikal, fon, atau preconnect. Elakkan imej berkebarangkalian rendah, skrip diperibadikan, dan aset bergantung kebenaran yang membazirkan lebar jalur atau membuat pratarik perkara yang salah.
HTTP/1.1 103 Early Hints
Link: </app.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8Langkah 3: Sahkan perantara dan sandaran
Uji pengimbang beban sebenar, penamatan TLS, CDN, dan laluan pelayar untuk memajukan atau menggunakan 103. Klien yang mengabaikannya mesti tetap menerima rujukan biasa dalam respons akhir; jangan sekali-kali menjadikan halaman bergantung pada mesej interim.
Langkah 4: Batasi kesan cache dan keselamatan
Pembayang mesti sepadan dengan konteks permintaan semasa. Gunakan URL bercincang kandungan (content-hashed) dan Cache-Control yang betul; jangan sekali-kali membina nilai Link sewenang-wenangnya daripada input pengguna. preconnect rentas-asal mendedahkan niat sambungan dan menggunakan sumber, jadi benarkan hanya asal yang dipercayai dan parameter yang diperlukan.
Langkah 5: Elakkan pramuat yang salah
Jika pengesahan, eksperimen, atau geografi mengubah set sumber, tunggu keyakinan yang lebih tinggi atau tinggalkan pembayang. Jika respons akhir tidak lagi merujuk sumber yang dibayangkan, pelayar mungkin telah membazirkan muat turun; ukur kos tersebut.
Langkah 6: Perhati dan undurkan (roll back)
Log sama ada 103 telah dihantar, status akhir, masa penemuan, capaian cache, bait pendua, dan perbezaan mengikut proksi. Kawal pelancaran mengikut laluan atau trafik dengan bendera ciri (feature flag). Nyahdayakan pembayang jika lebar jalur, ralat, atau metrik pengguna merosot; HTML akhir kekal tidak berubah.
Pertukaran dan sempadan
103 berbanding pautan pramuat
103 menggerakkan pembayang lebih awal, manakala link HTML biasa kekal sebagai rujukan berwibawa akhir. Mereka mesti sepadan untuk mengelakkan muat turun pendua atau konflik keutamaan. Pembayang tidak menggantikan CSP, integriti, atau dasar kebenaran.
Versi protokol dan perantara
RFC 8297 mentakrifkan semantik, tetapi rantaian proksi mungkin menggugurkan respons 1xx. Ukur gabungan HTTP/2, HTTP/3, CDN, dan klien yang sebenar serta kekalkan garis dasar tanpa 103.
Pelan pelancaran dan bukti
Pelepasan berperingkat
Mulakan dengan CSS statik pada satu laluan, sahkan respons akhir dan rujukan, kemudian kembangkan kepada fon atau preconnect yang selamat. Kekalkan suis pemati (kill switch) dan bandingkan lawatan kali pertama, lawatan dicache, dan rangkaian perlahan secara berasingan.
Metrik dan penerimaan
Jejak LCP, masa penemuan sumber, bait pendua, kadar capaian cache, 4xx/5xx, dan lebar jalur. Selaraskan alat pelayar, log pinggir (edge logs), dan RUM; log penghantaran pelayan sahaja tidak dapat membuktikan tingkah laku klien.
Kesilapan biasa dan susulan
Kesilapan: menganggap 103 sebagai kejayaan akhir
Keadaan perniagaan, caching, dan ralat menggunakan respons akhir; kehilangan 103 tidak boleh menggagalkan permintaan.
Kesilapan: memberi pembayang untuk setiap sumber
Aset berkeyakinan rendah membazirkan lebar jalur dan sambungan. Utamakan set kritikal yang kecil dan stabil.
Kesilapan: hanya menguji laluan tempatan secara langsung
CDN pengeluaran, proksi, dan penamatan TLS boleh mengubah tingkah laku 1xx; uji dari hujung ke hujung.
Susulan: bagaimana jika 103 tidak disokong?
Bergantung pada rujukan HTML akhir biasa dan caching sedia ada. Ketepatan kekal; hanya potensi peningkatan prestasi yang hilang.
Susulan: bagaimanakah anda membuktikan ia berbaloi dikekalkan?
Jalankan eksperimen pecahan (split experiment) untuk LCP, penemuan, bait pendua, ralat, dan lebar jalur, yang disegmenkan mengikut keadaan cache dan rangkaian.