我正在尝试使用PHP代理通过Apache / Nginx传输MP4文件以进行身份验证。我已经实现了为iOS流式传输的字节范围,如下所述:http://mobiforge.com/developing/story/content-delivery-mobile-devices。这在Chrome和Safari中完全正常但是......真的很奇怪的是,如果我监视服务器对php页面的请求,其中三个在浏览器中每页加载。以下是Chrome检查员的屏幕截图(直接进入PHP代理页面):
如您所见,第一个被取消,第二个被保留,第三个有效。同样,该文件在浏览器中播放。我尝试过使用相同结果读取文件(readfile,fgets,fread等)的替代方法。导致这三个请求的原因是什么?如何获得单个工作请求?
答案 0 :(得分:2)
第一个请求是第一个字节范围,预加载文件。浏览器在下载指定数量后取消该请求。
第二个我不确定...
第三个是当你真正开始播放媒体文件时,它会请求并下载完整的内容。
答案 1 :(得分:1)
不确定这是否能回答您的问题,但使用PHP提供大型二进制文件不是正确的做法。
最好让PHP只处理身份验证,并将文件引用传递给Web服务器进行服务,从而释放资源。
另请参阅:Caching HTTP responses when they are dynamically created by PHP
它更详细地描述了我建议做什么。