我们网站首页有个背景视频,但每次打开都卡半天,用户反馈很不好。我已经用了preload="metadata",也压缩过 MP4 文件了,还是慢。
试过用 WebM 格式替代,但 Safari 不兼容;还尝试懒加载,可首屏视频又不能等滚动才加载。有没有靠谱的方案?比如用 poster 图加点击播放?或者服务端做分段加载?
这是现在的代码:
<video autoplay muted loop playsinline>
<source src="hero-bg.mp4" type="video/mp4">
</video>
具体来说,我们可以从三个方面入手:前端优化、服务端优化和用户体验增强。
在前端方面,除了你提到的 poster 图片方案,还可以利用视频格式转换工具生成不同分辨率的视频版本,通过
srcset属性实现响应式加载。比如:这样小屏设备就不会加载全尺寸视频了。记得加上
poster属性,显示一张静态图作为占位符,提升第一眼体验。服务端优化这块,建议启用 HTTP/2 和 Brotli 压缩,特别是对于视频文件,最好让服务器支持范围请求(Range Requests),这能实现实质上的分段加载。
关于用户体验,确实可以用点击播放代替自动播放。不过有个更优雅的做法是:先展示一张高质量海报,等页面其他内容加载完再异步加载视频。代码大概是这样:
这个方案既能保证首屏加载速度,又能提供完整的视频体验。说实话,视频背景这种设计虽然酷炫,但在移动网络环境下确实需要谨慎处理。
再把视频切成小段,服务端开启分片传输。搞定。