javascript - 在网页上加载视频的最佳做法?

标签 javascript ajax performance video

想了解 AirBnb 如何能够如此快速地在其主页上加载 20MB 的背景视频文件。在 WebPageTest 查看了他们的主页之后, 我注意到该视频没有出现在任何下载的资源中,这使得它的得分如此之高。当我尝试这种策略时,通过 AJAX 异步加载视频,视频仍然作为下载资源显示在 WebPageTest 上,但只是在 DOM 加载之后。所以我真的不确定 AirBnb 是如何做到这一点的。有人有想法吗?

最佳答案

AirBnb 在这里没有做任何特别的事情。他们刚刚开始使用渐进式下载播放媒体,这仅意味着在视频仍在下载时开始播放。

在他们的 CDN 上,他们上传了一些相当大的 MP4 文件,这些文件具有两个重要特征:

  1. 索引信息(MOOV 原子)已移至 MP4 文件的开头
  2. 视频以您的浏览器支持的格式和编解码器编码

由于这些特性,站点所要做的就是告诉您的浏览器开始播放源 URL,它会做正确的事情:它向 CDN 发出 Web 请求并开始下载文件。一旦传输了足够的数据开始播放,它就会开始播放。

最后,我不能确定为什么 WebPageTest 不向您显示驱动视频的视频 MP4,但它们肯定存在,并且 URL 看起来像 https://a0.muscache.com/airbnb/static/Xxxxx-X1-1.mp4 .我怀疑他们正在查看您的用户代理来决定向您发送哪个文件,并且根本不会向 Google 和 WebPageTest 等机器人发送任何视频。

您无法通过 WebPageTest 了解真实情况。不要依赖第三方在他们的环境中评估页面,您应该使用 Fiddler 观察您实际发送的流量。或 Chrome 开发者工具上的网络选项卡。

关于javascript - 在网页上加载视频的最佳做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33549178/

相关文章:

javascript - 如何将 Angular 图表与我的信息结合使用?

javascript - Vue.js 禁用动态绑定(bind)?

MySQL 查询在复合键表上运行速度非常慢

JQuery clearInterval() 正在添加延迟

javascript - 增量 gulp less build

JavaScript 和 Canvas : Draw and delete lines to create a "breathing" circle

javascript - .ready 不承认 AJAX 内容

javascript - ajax 调用期间刷新页面正在破坏 php session

javascript - 如何对 GraphHopper 路由优化 API 进行 AJAX 调用?

performance - 优化 Haskell 中的数值数组性能