我正在托管一个提供 HTML 视频的网站。我的服务器的视频响应包含标题 cache-control: public, max-age=31536000, immutable
.一切都在 Firefox 上运行,但在 Chrome 和 Safari 上,我没有看到我期望的缓存结果。
我的 JavaScript (Angular) 以随机时间间隔将视频搜索到随机位置。我面临两个相关但截然不同的问题:
我怀疑问题出在视频的大小 (170 MB) 上,因此我将其替换为较小的视频 (9 MB) 以进行测试。较短的视频不会遇到较长的视频所遇到的任何问题:
两个视频的请求/响应头是一样的,所有的响应都有
206
状态。我能发现的唯一显着区别是较小的视频通常只需要 1 个请求即可下载,而较大的视频则需要多个请求。为什么我无法缓存更大的视频?我该如何解决?
最佳答案
正如您提到的,您正在发送 206
部分内容的状态代码以及 age header
,但这还不是全部。
方法一
您必须发送 Content-Range
header 可以表示正在为媒体下载的内容范围以帮助浏览器。此外,浏览器有一个缓存限制,它会在出现新内容时自动修剪旧的/过时的内容。您可以仔细阅读here ,
方法二
此外,如果标题策略不起作用,您可以随时尝试 service-worker
为特定媒体内容缓存和构建您自己的缓存桶和缓存策略,您可以阅读有关此内容的更多信息 here .
I hope while testing caching, you're not "Disabling Cache" in Dev-tools and also verify the correct request and response headers from server logs instead of browser for validating caching.
希望能帮到你。
关于google-chrome - Chrome 和 Safari 不缓存大视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62473773/