Rails资产管道和字节服务HTML5视频

时间:2014-08-26 11:05:52

标签: ruby-on-rails html5 video html5-video

通过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内或网络上的其他地方)并且因此,在源存储库之外。

暂且不考虑视频是否应该来源,是否有人知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

如果您深入了解rails资源,您会看到对资产(不在/ public)的请求是通过sprockets-rails提供的,该Sprockets::Server会安装一个{{1}的实例的机架应用在/ assets路径上。

如果你再挖掘链轮,它的机架位由Rack::File表示。如果你仔细阅读,很明显这不支持部分获取 - 没有任何东西检查Range头。我不认为这是出于任何原因,除了没有人需要它足以实现它。

另一方面,当一个文件处于公共状态时,它由{{3}}服务,它支持部分获取,或者由你放在它前面的任何服务器(nginx,apache)支持,这通常会支持部分得到。