Forward proxy orqali oqim va to'liq javobni buferlash
Yuklab olish proxy'da kutayotgandek ko'rinsa, oqim, oldindan o'qish buferi va to'liq javobni qayta ishlashni ajrating.
Yuklab olish kutayotgandek ko'rinsa, uchta hodisani ajrating: javob sarlavhalarining kelishi, tana baytlarining kelishi va ilovaning natijani ishlatishi yoki ko'rsatishi. Faqat spinner qaysi biri kechikayotganini aniqlay olmaydi.
Oddiy oqim bosqichlari bir-biriga qatlamlanishi mumkin:
origin produces a chunk → proxy forwards bytes → client consumes themProxy uzatayotganda mos kontentni keshga yozishi mumkin. Keshlash butun faylni kutishni talab qilmaydi. Squid'ning read_ahead_gap yetkazib berishdan oldin ketayotgan olishni boshqaradi, bu boshqa turdagi buferlash.
Sekin mijoz chiqish navbatlarini to'ldirganda orqaga bosim yuqori oqimdagi o'qishni vaqtincha to'xtatishi mumkin. Content-Length ham to'liq buferlashsiz uzunlikni beradi. HTTP/1.1 chunked kodlash bosqichma-bosqich yetkazishga imkon beradi, lekin oldingi komponent ma'lumotni ushlab tursa, past kechikishga kafolat bera olmaydi.
Keyin qayta ishlash bosqichlarini ko'rib chiqing. Qayta yozish yoki tekshirish tananing bir qismini yoki butunligini talab qilishi mumkin. Siqish va ilova ramkalari foydali chiqishni kechiktirishi mumkin. Mijozda to'liq bayt massivini kutadigan usul kechroq qaytadi, brauzer esa baytlarni ko'rsatishdan oldin qabul qilishi mumkin.
Muvaffaqiyatli CONNECT'dan so'ng oddiy proxy tunnel qilingan faylning yakuniy uzunligini bilmasdan xizmat oqimini uzatadi. Bufer yoki taym-aut sozlamalarini o'zgartirishdan oldin yuqoridagi birinchi yo'qolgan hodisani kuzatib boring. curl kuzatuvchi bo'lsa, uning no-buffer parametri mahalliy chiqish bosqichini o'zgartiradi.