通过rails资产管道提供的HTML5视频(例如放置在/app/assets/videos
中)没有响应状态代码 206 Partial Content 。
视频确实显示正确,但以 200 OK 响应,使搜索(并且循环,我相信)不可能。
作为放置在/public
文件夹中的静态文件的同一视频实际上会根据需要返回 206 Partial Content 。
我可以排除这是一个编码问题,有问题的测试视频来自videojs网站:http://vjs.zencdn.net/v/oceans.mp4
对于特定项目,我们已被要求将视频放在/app/assets/videos
文件夹中,但上述内容迫使我们将视频放在其他地方(例如在/public
内或网络上的其他地方)并且因此,在源存储库之外。
暂且不考虑视频是否应该来源,是否有人知道为什么会发生这种情况?
答案 0 :(得分:4)
如果您深入了解rails资源,您会看到对资产(不在/ public)的请求是通过sprockets-rails提供的,该Sprockets::Server
会安装一个{{1}的实例的机架应用在/ assets路径上。
如果你再挖掘链轮,它的机架位由Rack::File
表示。如果你仔细阅读,很明显这不支持部分获取 - 没有任何东西检查Range头。我不认为这是出于任何原因,除了没有人需要它足以实现它。
另一方面,当一个文件处于公共状态时,它由{{3}}服务,它支持部分获取,或者由你放在它前面的任何服务器(nginx,apache)支持,这通常会支持部分得到。