Форвард проксигоор дамжуулах урсгал ба бүрэн хариултыг буферлэх
Татаж авах үйлдэл прокси дээр хүлээж байгаа мэт харагдах үед урсгал, урьдчилан унших буфер, бүрэн хариултыг боловсруулахыг ялгана.
Татаж авах үйлдэл хүлээж байгаа мэт харагдах үед гурван үйл явдлыг ялгана: хариултын толгой ирэх, биеийн байт ирэх, програм үр дүнг ашиглах эсвэл харуулах боломж. Зөвхөн ачааллын заагч аль нь хоцорч байгааг тодорхойлж чадахгүй.
Хэвийн урсгалын үе шатууд давхцаж болно:
origin produces a chunk → proxy forwards bytes → client consumes themПрокси дамжуулахын зэрэгцээ тохирох агуулгыг кэш рүү бичиж болно. Кэшлэх нь бүх файлыг хүлээхийг шаарддаггүй. Squid-ийн read_ahead_gap хүргэлтээс түрүүнд явах татан авалтыг удирддаг бөгөөд энэ нь буферлэх өөр төрөл юм.
Удаан клиент гаралтын дарааллыг дүүргэх үед эсрэг даралт дээд талын уншилтыг түр зогсоож болно. Content-Length мөн бүрэн буфергүйгээр уртыг өгдөг. HTTP/1.1 chunked кодчилол шат дараатай хүргэлтийг зөвшөөрдөг боловч өмнөх бүрэлдэхүүн өгөгдлийг барьж байвал бага саатал амлах боломжгүй.
Дараа нь боловсруулах үе шатуудыг шалгана. Дахин бичих эсвэл шалгах нь биеийн хэсэг эсвэл бүхэлд нь шаардаж болно. Шахах болон програмын хүрээ нь ашигтай гаралтыг хойшлуулж болно. Клиент талд бүрэн байт массив хүлээдэг арга хожуу буцаж, хөтөч харуулахаас өмнө байт хүлээн авч болно.
Амжилттай CONNECT-ийн дараа энгийн прокси туннельдсан файлын эцсийн уртыг мэдэхгүйгээр үйлчилгээний урсгалыг дамжуулна. Буфер эсвэл таймаутын тохиргоог өөрчлөхөөс өмнө дээрх эхний алга болсон үйл явдлыг дагана уу. curl ажиглагч байх үед түүний no-buffer сонголт локал гаралтын үе шатыг өөрчилдөг.