İleti proxy üzerinden akış ile tam yanıtın tamponlanması
Bir indirme proxy'de bekliyor gibi göründüğünde akışı, ön okumalı tamponlamayı ve tam yanıt işlemeyi ayırın.
Bir indirme bekliyor gibi göründüğünde üç olayı ayırın: yanıt başlıklarının gelmesi, gövde baytlarının gelmesi ve uygulamanın sonucu kullanabilmesi veya görüntüleyebilmesi. Tek başına bir yükleme göstergesi hangisinin geciktiğini belirleyemez.
Normal akış aşamaları birbiriyle örtüşebilir:
origin produces a chunk → proxy forwards bytes → client consumes themProxy, iletirken uygun içeriği önbelleğe yazabilir. Önbellekleme tüm dosyayı beklemeyi gerektirmez. Squid'in read_ahead_gap ayarı teslimattan önce giden alımı denetler; bu başka bir tamponlama türüdür.
Yavaş bir istemci çıktı kuyularını doldurduğunda karşı basınç yukarı akış okumalarını geçici olarak durdurabilir. Content-Length de tam tamponlama gerektirmeden uzunluğu verir. HTTP/1.1 chunked kodlaması kademeli teslimata izin verir, ancak önceki bir bileşen veriyi tutuyorsa düşük gecikme vaat edemez.
Ardından işleme aşamalarını inceleyin. Yeniden yazma veya denetim gövdenin bir kısmını ya da tamamını gerektirebilir. Sıkıştırma ve uygulama çerçevelemesi yararlı çıktıyı geciktirebilir. İstemcide tam bayt dizisini bekleyen bir yöntem daha geç döner ve tarayıcı baytları işleyemeden önce alabilir.
Başarılı bir CONNECT sonrasında sıradan bir proxy, tünellenen dosyanın son uzunluğuna ihtiyaç duymadan hizmet akışını iletir. Tampon veya zaman aşımı ayarlarını değiştirmeden önce yukarıdaki ilk eksik olayı izleyin. curl gözlemci olduğunda, no-buffer seçeneği yerel çıktı aşamasını değiştirir.