Spesifikasi mengatakan:

Server HARUS mengirim frame PUSH_PROMISE (Bagian 6.6) sebelum mengirim frame apa pun yang merujuk pada respons yang dijanjikan. Ini menghindari perlombaan di mana klien mengeluarkan permintaan sebelum menerima frame PUSH_PROMISE.

Misalnya, jika server menerima permintaan untuk dokumen yang berisi tautan tertanam ke beberapa file gambar dan server memilih untuk mendorong gambar tambahan tersebut ke klien, mengirimkan bingkai PUSH_PROMISE sebelum bingkai DATA yang berisi tautan gambar memastikan bahwa klien dapat untuk melihat bahwa sumber daya akan didorong sebelum menemukan tautan yang disematkan.

Dalam contoh yang diberikan, saya menganggap tidak apa-apa bagi server untuk mengirim data gambar sebelum atau sesudah "dokumen yang berisi tautan yang disematkan ke beberapa file gambar".

Apakah semua ini diperbolehkan?

Seri A

  1. dokumen permintaan klien
  2. server mengirimkan PUSH_PROMISE gambar
  3. server mengirim dokumen
  4. server mengirim gambar

Seri B

  1. dokumen permintaan klien
  2. server mengirimkan PUSH_PROMISE gambar
  3. server mengirim gambar
  4. server mengirim dokumen

Seri C

  1. dokumen permintaan klien
  2. server mengirimkan PUSH_PROMISE gambar
  3. server mengirim gambar/dokumen secara bersamaan, yaitu bingkai diselingi

(Dalam semua kasus, Ketika klien membuat permintaan untuk gambar, itu memblokir mereka yang diterima secara lokal pada id aliran yang dijanjikan.)

0
lf215 25 November 2017, 22:21

1 menjawab

Jawaban Terbaik

Ketiga opsi ini layak untuk server. Misalnya, Jetty mengimplementasikan opsi C.

Namun, saya tidak akan membuat asumsi apa pun tentang perilaku klien, dengan asumsi bahwa klien akan menunggu karena menerima PUSH_PROMISE.

Misalnya, jika klien sangat membutuhkan salah satu sumber daya yang telah dijanjikan, klien dapat membatalkan sumber daya yang didorong dan mengeluarkan permintaan untuk sumber daya tersebut dengan prioritas tinggi.

1
sbordet 26 November 2017, 13:39