Streaming mediante proxy directo frente al almacenamiento de la respuesta completa
Separe el streaming, el almacenamiento con lectura anticipada y el procesamiento de la respuesta completa cuando una descarga parece esperar en un proxy.
Cuando una descarga parece esperar, separe tres eventos: llegan las cabeceras de respuesta, llegan los bytes del cuerpo y la aplicación puede usar o representar el resultado. Un indicador giratorio por sí solo no identifica cuál de ellos se retrasa.
Las etapas normales de streaming pueden solaparse:
origin produces a chunk → proxy forwards bytes → client consumes themUn proxy puede escribir contenido apto en la caché mientras lo retransmite. El almacenamiento en caché no exige esperar el archivo completo. El read_ahead_gap de Squid controla la recuperación que va por delante de la entrega, que es otro tipo de almacenamiento.
La contrapresión puede detener temporalmente las lecturas ascendentes cuando un cliente lento llena las colas de salida. Content-Length también proporciona la longitud sin exigir un almacenamiento completo. La codificación HTTP/1.1 chunked permite la entrega incremental, pero no puede prometer baja latencia si un componente anterior retiene los datos.
A continuación, inspeccione las etapas de procesamiento. La reescritura o la inspección pueden necesitar parte o todo el cuerpo. La compresión y el encuadre de la aplicación pueden retrasar la salida útil. En el cliente, un método que espera la matriz de bytes completa tarda más en devolver, y un navegador puede recibir bytes antes de poder representarlos.
Tras un CONNECT correcto, un proxy normal retransmite el flujo del servicio sin necesitar la longitud final del archivo tunelizado. Siga el primer evento ausente anterior antes de cambiar la configuración de búfer o de tiempo de espera. Cuando curl es el observador, su opción no-buffer cambia la etapa de salida local.