一个集群环境下 webserver ETag 计算不一致,造成 Chrome 加载视频失败的小坑

2017-02-17 18:24:12 +08:00
 iyaozhen
昨晚上线了一个前端项目,有个背景视频播放功能,但发现在 https 下 Chrome 浏览器播放视频很大概率失败。

经过一番排查发现 Chrome 是分片下载视频,某个分片下载时 If-Match 头和 ETag 对不上就会报 412 错误,造成视频加载失败。

详见: https://iyaozhen.com/a-strange-chrome-video-play-problem.html

感觉这是一个比较典型的坑,所以分享下,也赚点点击量。欢迎大家一起讨论😁
3258 次点击
所在节点    编程
2 条回复
ryd994
2017-02-18 02:19:06 +08:00
1.网站挂了
2.应该优先考虑根据 IP 或者 cookie 做 pinning
3.etag 不一致是因为服务器版本不同么
iyaozhen
2017-02-18 08:03:39 +08:00
@ryd994 原文里面说明, Apache 默认使用 mtime 和 size 两个参数计算文件 etag ,但是因为部署方式的原因,每个服务器上的文件 mtime 不一致。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX