【问题标题】:Get youtube video information faster更快地获取 youtube 视频信息
【发布时间】:2011-10-26 04:06:06
【问题描述】:

现在我正在使用数据 API 协议获取 youtube 视频的信息 访问这个 url 会显示我需要的信息,但它对于执行十几个查询来说太慢了。获取 24 个视频大约需要 10 秒。

有没有办法在一个请求中发送多个查询或另一种方法 更快地获取信息?现在我只是用它来获得收视率。

https://gdata.youtube.com/feeds/api/videos/[video id] 

编辑:此时我正在通过 php 使用 get_file_contents() 获取它。 有没有比这更快的页面下载功能?

【问题讨论】:

  • 为什么要使用加密协议?这大大减慢了速度
  • 简单的解决方案:同时做多个请求。
  • @ alienwebguy 如果我不安全地使用它,它的速度完全相同。 @Chronial 我怎么能用 php 做到这一点?
  • @Drake curl 有这样的功能,请参阅curl_multi_init() 和其他 curl_multi 功能。
  • 您是否为每个请求打开一个新的 curl 连接?您如何获取这些提要?

标签: javascript php jquery youtube


【解决方案1】:

冒着被否决的风险:我只会发送没有评分的整个页面,并在页面完全加载时使用 ajax/jquery 添加评分。然后,速度将取决于访问者的互联网连接和浏览器(同时请求的数量)。

顺便说一句,我知道这不是最佳解决方案;这是基于其他两个解决方案被拒绝的事实......

【讨论】:

  • 我已经将其作为替代方案,因为所有这些其他用户都未能提出一个可行的解决方案。
【解决方案2】:

没有办法在单个请求中获取多个 URL,除非它是由 API 指定的功能或您从中提取的提要。如果 youtube 的 API 不允许您在一个请求中拉入多个项目,那么为了提高性能,您应该考虑预加载和缓存这些 URL。

如果您事先知道需要对哪些项目进行评级,则设置一个 cronjob 以预先将它们拉入,然后将它们缓存在某种持久性数据库中。

【讨论】:

  • 它不是我可以缓存的东西,它会从用户当前所在的每个页面中获取数据。因此,缓存每分钟更新的数千个视频评分不是一种选择。
  • 啊,我明白了。在这种情况下,加载页面然后在前端拉入评级时使用某种加载图标代替评级可能是有意义的。
  • 我很好奇,not useful这个答案怎么样?
【解决方案3】:

一次完成所有 curl 调用:

假设您有 10 个视频 ID:

kcvq0RcBkOE
OYpwAtnywTk
EvHwh9O9Tsg

...等等

在网址中用花括号将它们连接起来,如下所示:

curl http://gdata.youtube.com/feeds/api/videos/{kcvq0RcBkOE,OYpwAtnywTk,EvHwh9O9Tsg}

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 2012-12-14
    • 2013-04-04
    • 1970-01-01
    • 2011-07-08
    • 2013-03-03
    • 2020-12-03
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多