2014-12-10 6 views
0

IE9가 비디오 요청을하고 x-sendfile이 비디오를 제공 할 때 미리로드 특성 설정에 관계없이 요청이 보류 중으로 나열되고 연결이 열린 상태로 유지되는 문제가 발생했습니다.IE9가 요청할 때 X-Sendfile이 전체 비디오 파일을 제공하는 것을 어떻게 멈출 수 있습니까?

결과적으로 10 개의 비디오를로드하려고하면 IE9가 사용 가능한 모든 연결을 빠르게 먹고 브라우저가 추가 요청을 할 수 없습니다.

IE9가 X-Sendfile없이 Apache에서 동일한 비디오를 요청하도록 지시하면 Apache는 파일의 작은 부분을 200 요청으로 제공합니다. 그런 다음 브라우저는 파일의 범위를 제공하기 위해 재생 버튼을 눌렀을 때 나중에 요청합니다.

X-Sendfile이 아파치가 일부만 제공하는 대신 초기에 전체 파일을 제공하도록 만드는 것처럼 보입니다.

아파치를 통한 X-Sendfile 요청을 아파치에 대한 일반적인 요청과 동일한 방식으로 만들 수 있습니까?

답변

0

header("Accept-Ranges: bytes");과 같은 "Accept-Ranges"헤더를 설정하면 IE9가 하나의 청크로 제공하는 대신 기본적으로 파일을 스트리밍하려고 시도합니다.

1.0은 헤더를 지원하지 않으므로 설정하기 전에 HTTP 요청이 버전 1.1인지 확인하는 것이 좋습니다.

if (isset($_SERVER['SERVER_PROTOCOL']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1') { 
    header("Accept-Ranges: bytes"); 
} 

어디서나 설명서를 찾을 수 없어 여기에 내 솔루션을 게시하고 있습니다.

+1

Accept-Ranges 헤더를 설정해도 X-Sendfile에서 아무 것도 처리하지 않습니다. 클라이언트에게'Range : bytes' 요청을 지원한다고 알려줍니다. – hobbs

+0

@hobbs 멋진 캐치! 내가 잘못된 결론으로 ​​올바른 해결책을 찾은 것 같습니다! 나는 내 대답을 고칠 것이다. –