프리 페치합니다 웹 서버에 남겨두기보다는 서빙 프로세스에 대한 정보를 제공합니다.
웹 서버가 HTTP 요청에 응답하면 클라이언트에 요청 된 리소스의 크기 (바이트)를 알려주는 Length:
헤더가 포함됩니다. 웹 서버는 파일이 추가 될 예정임을 알지 못하기 때문에 요청시 사용 가능한 길이까지만 전송합니다. 클라이언트는 모든 데이터를 다운로드하지만 클라이언트의 관점에서 파일이 아직 인코딩되지 않은 상태에서 전체 파일을 아직 다운로드하지 않았습니다.
이 문제를 해결하려면 인코더의 출력을 파일과 클라이언트 모두에 동시에 파이프해야합니다. 클라이언트에 대한 응답 데이터의 경우 Length:
헤더를 전혀 포함하지 마십시오. 대부분의 클라이언트는 청크 분할 인코딩을 사용하므로 HTTP/1.1을 준수 할 수 있습니다. 일부 클라이언트 (초기 Android, 이전 브라우저, 이전 VLC)는 청크 분할 인코딩을 처리 할 수 없으며 들어오는대로 데이터를 스트리밍합니다.
어떻게 수행 할 것인지는 전적으로 서버 측 당신은 당신의 질문에 명시하지 않았습니다. 개인적으로, Node.js를 사용하면 프로세스가 매우 쉽습니다. 두 스트림 모두로 간단하게 파이프 할 수 있습니다. 다중 파이프 방법을 사용하면 파이프가 가장 느리게 실행됩니다. 일부 스트리밍 클라이언트 (예 : VLC)는 TCP 창 크기를 줄여 너무 많은 데이터를 클라이언트 측에서 버퍼링하지 않아야합니다. 이 경우 디스크에 쓰는 것은 클라이언트의 속도로 실행됩니다. 이것은 당신에게 중요하지 않을 수도 있지만 인식해야 할 것입니다.
감사합니다. 그 중 하나를 시도해보십시오 – user1312695
@ user1312695 죄송합니다. 게시물을 수정했습니다. – Limnic
preload 속성이