我已将mp4视频动画上传到Azure Blob存储。除了将Content-Type设置为video / mp4之外,所有标头都是默认值。可以在http://paddingtondev.blob.core.windows.net/media/1001/animation_default_headers.mp4上访问该视频。
我在该Blob存储帐户上有一个Azure CDN。通过CDN的同一视频的URL为http://az593791.vo.msecnd.net/media/1001/animation_default_headers.mp4
当我通过网页上的HTML5视频元素访问Blob存储的视频时,浏览器(已在FF和Chrome中进行了测试)通过200 HTTP响应接收整个视频。然后,对该视频的进一步请求从Blob存储收到304响应。
但是,当您通过Azure CDN请求视频时,它会以一系列HTTP 206部分响应的形式返回给您。这是对浏览器在请求中指定Range标头的响应。
但是,通过CDN对视频的其他请求不会被缓存,浏览器会重新下载整个视频(通过一系列其他206个请求)。
如何确保视频被缓存?我了解部分回复的用处,但在我们的情况下,该视频将不可搜索,只有在下载整个文件后才能播放。我在这里可以看到一些方法,但是到目前为止,没有一种方法有帮助:
禁止Azure CDN返回部分响应
以某种方式从原始浏览器请求中删除范围标头
劝说浏览器缓存206个部分响应
我尝试将max-age Cache-Control标头添加到文件,但这没有影响。理想情况下,在重新加载视频时,我们甚至都不会打到Azure(因为它永远不会改变),但是如果它随后返回304,我很乐意接受HTTP请求到Azure的费用。