2014-12-10 15 views
0

我遇到了一個問題,無論預加載屬性設置如何,當IE9發出視頻請求,並且視頻由x-sendfile提供服務時,該請求被列爲掛起並保持連接處於打開狀態。因此,如果您有10個試圖加載的視頻,IE9會很快耗盡所有可用的連接,並且瀏覽器將無法提出更多請求。當IE9發出請求時,如何阻止X-Sendfile服務於完整的視頻文件?

當告訴IE9在沒有X-Sendfile的情況下從Apache請求相同的視頻時,Apache會將該文件的一小部分作爲200請求提供。然後,當按下播放按鈕來提供文件範圍時,瀏覽器稍後發出請求。

它看起來像X發送文件導致Apache最初服務於整個文件,而不是隻提供一部分。

如何通過Apache函數將X-Sendfile請求與對Apache的常規請求相同?

回答

0

設置「Accept-Ranges」標頭,如header("Accept-Ranges: bytes");告訴IE9默認嘗試流式傳輸文件,而不是將其放在一個塊中。

建議在設置之前檢查HTTP請求是否爲版本1.1,因爲1.0不支持標頭。

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

我無法在任何地方找到任何文檔,所以我在這裏發佈我的解決方案。

+1

設置Accept-Ranges標頭不會導致X-Sendfile執行任何操作。它告訴客戶你支持'Range:bytes'請求。 – hobbs 2014-12-10 23:05:52

+0

@hobbs好的,趕上!看起來我得出了錯誤結論的正確解決方案!我會修改我的答案。 – 2014-12-10 23:15:48

相關問題