Жүктеу күтіп тұрғандай көрінсе, үш оқиғаны ажыратыңыз: жауап тақырыптарының келуі, дененің байттарының келуі және қолданбаның нәтижені пайдалануы немесе көрсетуі. Тек жүктелу индикаторы қайсысының кешіккенін анықтай алмайды.

Қалыпты ағын кезеңдері бір-бірімен қабаттасуы мүмкін:

origin produces a chunk → proxy forwards bytes → client consumes them

Прокси тасымалдау кезінде сәйкес мазмұнды кэшке жаза алады. Кэштеу бүкіл файлды күтуді талап етпейді. Squid-тің read_ahead_gap жеткізуден ілгері жүретін алуды басқарады, бұл буферлеудің басқа түрі.

Баяу клиент шығыс кезектерін толтырғанда кері қысым жоғарғы ағындағы оқуды уақытша тоқтата алады. Content-Length толық буферсіз ұзындықты береді. HTTP/1.1 chunked кодтауы біртіндеп жеткізуге мүмкіндік береді, бірақ алдыңғы құрамдас деректерді ұстап тұрса, төмен кідіріске кепілдік бере алмайды.

Содан кейін өңдеу кезеңдерін қарап шығыңыз. Қайта жазу немесе тексеру дененің бір бөлігін немесе толығын қажет етуі мүмкін. Сығу және қолданба жақтауы пайдалы шығысты кешіктіруі мүмкін. Клиентте толық байт массивін күтетін әдіс кешірек қайтарады, ал браузер байттарды көрсетуге болатынға дейін қабылдауы мүмкін.

Сәтті CONNECT кейін қарапайым прокси туннельденген файлдың соңғы ұзындығын білмей-ақ қызмет ағынын жеткізеді. Буфер немесе таймаут параметрлерін өзгерту алдында жоғарыдағы бірінші жетіспейтін оқиғаны бақылаңыз. curl бақылаушы болса, оның no-buffer опциясы жергілікті шығыс кезеңін өзгертеді.

Қатысты мақалалар