Streaming proxy maju versus penyangga respons penuh
Pisahkan streaming, penyangga baca-depan, dan pemrosesan respons penuh saat unduhan tampak menunggu di proxy.
Saat unduhan tampak menunggu, pisahkan tiga peristiwa: header respons tiba, byte isi tiba, dan aplikasi dapat memakai atau menampilkan hasilnya. Spinner saja tidak dapat menunjukkan mana yang tertunda.
Tahap streaming normal dapat saling tumpang tindih:
origin produces a chunk → proxy forwards bytes → client consumes themProxy dapat menulis konten yang memenuhi syarat ke cache sambil meneruskannya. Cache tidak mengharuskan menunggu seluruh berkas. read_ahead_gap milik Squid mengatur pengambilan yang berjalan mendahului pengiriman, yaitu jenis penyangga lain.
Tekanan balik dapat menghentikan sementara pembacaan hulu ketika klien lambat memenuhi antrean keluaran. Content-Length juga memberi panjang tanpa penyangga penuh. Pengodean HTTP/1.1 chunked memungkinkan pengiriman bertahap, tetapi tidak dapat menjanjikan latensi rendah jika komponen sebelumnya menahan data.
Selanjutnya periksa tahap pemrosesan. Penulisan ulang atau inspeksi mungkin membutuhkan sebagian atau seluruh isi. Kompresi dan pembingkaian aplikasi dapat menunda keluaran yang berguna. Di klien, metode yang menunggu larik byte lengkap baru kembali, dan peramban dapat menerima byte sebelum dapat merendernya.
Setelah CONNECT berhasil, proxy biasa meneruskan aliran layanan tanpa memerlukan panjang akhir berkas yang diterowongkan. Ikuti peristiwa hilang pertama di atas sebelum mengubah pengaturan penyangga atau batas waktu. Ketika curl adalah pengamat, opsi no-buffer-nya mengubah tahap keluaran lokal.