【发布时间】:2019-10-27 06:41:21
【问题描述】:
我有一个相当大的 HTML5 视频。我也在使用 Chrome。 video 元素具有loop 属性,但每次视频“循环”时,浏览器都会重新下载视频文件。我设置了Cache-Control "max-age=15768000, private"。但是,这不会阻止对相同文件的任何额外下载。我正在使用 Amazon S3 来托管文件。此外,s3 服务器使用 Accepts Ranges 标头进行响应,这导致使用 206 http 响应代码请求文件的数百个部分下载。
这是我的视频标签:
<video autoplay="" loop="" class="asset current">
<source src="https://mybucket.s3.us-east-2.amazonaws.com/myvideo.mp4">
</video>
更新:
似乎最好的解决方案是防止 Accept Ranges 标头与原始响应一起发送,而是使用 200 http 响应代码。如何做到这一点,以便视频通过.htaccess 文件完全缓存?
提前致谢。
【问题讨论】:
-
视频有多大,多久循环一次?另一种处理方法是使用服务人员。
-
@Brad 这是 900mb 并且无限循环。
-
你检查过浏览器的缓存大小吗?
-
你怎么知道浏览器重新下载了文件?当您从本地源播放文件时(与 amazon s3 相反),您是否有同样的问题。您是在单个页面中播放文件还是它存在于 DOM 中?
-
您是否尝试重新编码您的视频?您的视频的 webm 版本是否也会发生同样的情况?
标签: javascript html google-chrome http amazon-s3