这是我在本网站上发布的第一个问题,因此,如果标题不清楚,您必须原谅我。
我有这种情况:一个php页面需要处理从不同的api调用(facebook,youtube,lastfm)获取的数据。正如预期的那样,该页面将需要数年的时间加载,这很好。
问题是。
可以创建一个仅包含启动过程所需的两个基本数据的页面(facebook id和Token),然后告诉用户等待,然后由服务器端启动该过程,而无需离开此烦人的“加载页面” “开?我真的不知道如何触发这样的事情。
先感谢您。
附言我已经设法通过fql对Facebook api和类似其他技巧的多次查询进行了优化,但是由于一个api的调用结果导致了对另一个api的特定调用,因此我似乎无法获得它Fastwe。
而且,显然,我已经完成了Facebook身份验证过程,以使用户登录到此缓慢的加载页面。
最佳答案
您将需要使用这种类型的范例来获得最佳的用户体验。
AJAX是您的 friend
仅发送您需要的最少信息,以向用户显示页面的轮廓。
<html>
<head>
...scripts, meta, css etc...
</head>
<body>
<h1>Facebook Info</h1>
<div id=facebook-info>
<p>loading...</p>
</div>
<h1>Twitter Info</h1>
<div id=twitter-info>
<p>loading...</p>
</div>
</body>
</html>
然后在每个内容部分(尚未加载)中都有一个微调器。
在加载javascript时(为简化起见,我缩写为...有关其ajax调用的更多信息,请参见http://jQuery.com/),您可以调用特定的php页面,这些页面吐出一些JSON。这是真正的工作发生并花费时间的地方。
<script>
$(document).ready(function(){
$.ajax('/content/getFacebookInfo.php',displayFacebookContent);
$.ajax('/content/getTwitterInfo.php',displayTwitterContent);
});
</script>
然后,在displayFacebookContent和displayTwitterContent回调函数中,您可以在此处动态构建DOM的内容。
<script>
var displayTwitterContent = function(response) {
var html = "<ul>";
foreach(var i in response.posts) {
html += "<li>" + response.posts[i].message + "</li>";
}
html += "</ul>";
$('#titter-info).append(html);
};
</script>
再次,这是表示概念的缩写,您必须充实脚本,还必须构建用JSON对象响应的php处理程序。
通过将艰苦的工作转移给AJAX处理程序,可以快速提供主要HTML,使用户感到满意。等到他的视线在页面上移动时,一些AJAX调用将已经完成,并且您已经将可用数据动态插入到DOM中,他们将看到它们。
这有点像Google在您键入内容时进行的搜索,它会在服务器上进行AJAX调用,并在您单击提交之前获取内容供您实时显示。
关于php - 带有多个api调用的慢PHP页面:我的用户将在等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919609/