首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >YouTube应用程序接口检索数据在加载时会显著降低我的站点速度

YouTube应用程序接口检索数据在加载时会显著降低我的站点速度
EN

Stack Overflow用户
提问于 2012-02-18 08:14:28
回答 2查看 382关注 0票数 0

我正在使用YouTube的api来加载用户在网站上分享的视频的当前数据,就像Facebook一样,事情是这样的,它减慢了我的网站的速度,每组数据大约2-4秒,所以如果我有一个视频2-4秒,那么2个视频4-8秒,等等。所以我的问题是,有没有一种方法可以不检索所有的数据,而且速度更快。(当用户分享视频时,我将视频的标题和描述存储在我自己的数据库中,但其他数据我不能。以下是我的代码:

代码语言:javascript
运行
复制
 $JSON = file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$videoID}&alt=json");
 $JSON_Data = json_decode($JSON);
 $ratings = $JSON_Data->{'feed'}->{'entry'}[0]->{'gd$rating'}->{'average'};
 $totalRatings = number_format($JSON_Data->{'feed'}->{'entry'}[0]->{'gd$rating'}->{'numRaters'});
 $views = number_format($JSON_Data->{'feed'}->{'entry'}[0]->{'yt$statistics'}->{'viewCount'});

我也加载了缩略图,我可能会在提交时将缩略图保存在我的服务器上,但这似乎并不是使它变慢的原因,因为当我删除它时,仍然需要很长时间。

代码语言:javascript
运行
复制
 $thumbnail = "http://img.youtube.com/vi/".$videoID."/2.jpg";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 21:36:36

您可以使用CURL、file_get_contents .....这不是重点。

重要的一点是:缓存响应!

使用memcached、文件系统、数据库或其他任何东西,但永远不要在页面加载时调用API

票数 0
EN

Stack Overflow用户

发布于 2012-02-18 08:27:09

据我所知,这通常是PHP不太擅长做的事情。

它根本不支持多线程,而线程正是您想要做的(同时执行所有http请求,以便合并它们的延迟)。

也许你可以使用javascript将这部分逻辑转移到浏览器中?JavaScript中的XMLHTTPRequest对象支持多线程。

据我所知,在PHP中唯一的方法是使用原始套接字(fsockopen(); fwrite(); fread(); fclose();),但这不是为了假装用心……您需要熟悉HTTP规范。

最后,内容会有很大变化吗?也许您可以在数据库中对html进行本地缓存,并使用cron作业(可能每30秒运行一次)来重新构建缓存?这可能违反了谷歌的服务条款。

实际上,最好的解决方案是使用支持线程的其他语言进行服务器通信,并使用PHP脚本与之对话。我可能会用Ruby。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9337204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档