带有多个api调用的慢速Php页面:我的用户将等待

带有多个api调用的慢速Php页面:我的用户将等待,php,facebook,performance,api,youtube,Php,Facebook,Performance,Api,Youtube,这是我在这个网站上发布的第一个问题,如果标题不清楚,请原谅 我有这样的情况:一个php页面需要处理来自不同api调用(facebook、youtube、lastfm)的数据。正如预期的那样,页面将需要数年才能加载,这很好。 所以问题是 是否可以创建一个页面,只获取启动流程所需的两个基本数据(facebook id和令牌),然后告诉用户等待,服务器端启动流程,而不让这个恼人的“加载页面”保持打开状态?我真的不知道怎么触发这样的事情 先谢谢你 顺便说一句,我已经成功地用fql多查询优化了facebo

这是我在这个网站上发布的第一个问题,如果标题不清楚,请原谅

我有这样的情况:一个php页面需要处理来自不同api调用(facebook、youtube、lastfm)的数据。正如预期的那样,页面将需要数年才能加载,这很好。 所以问题是

是否可以创建一个页面,只获取启动流程所需的两个基本数据(facebook id和令牌),然后告诉用户等待,服务器端启动流程,而不让这个恼人的“加载页面”保持打开状态?我真的不知道怎么触发这样的事情

先谢谢你

顺便说一句,我已经成功地用fql多查询优化了facebook api和其他类似的技巧,但是由于从一个api调用的结果导致了对另一个api的特定调用,所以我似乎不可能快速得到它。
而且,很明显,我已经完成了用户登录此慢速加载页面的facebook身份验证过程。

如果您正在使用FB验证用户,请抓取cookie。如果存在,请使用某种类型的JQUERY脚本在页面上显示“加载”覆盖。

如果要使用FB验证用户,请抓取cookie。如果存在,请使用某种类型的JQUERY脚本在页面上显示“加载”覆盖。

您将希望使用这种类型的范例来获得最佳的用户体验

阿贾克斯是你的朋友

只发送您需要的最少信息,以便向用户显示页面的大纲

<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>

…脚本、元、css等。。。
Facebook信息
加载

推特信息 加载

然后在每个内容部分(您尚未加载)中都有一个微调器

在加载javascript的过程中(为了清晰起见,我对其进行了缩写……有关ajax调用的更多信息,请参阅),您可以调用特定的php页面,从而输出一些JSON。这是真正的工作发生的地方,需要时间

<script>
$(document).ready(function(){
   $.ajax('/content/getFacebookInfo.php',displayFacebookContent);
   $.ajax('/content/getTwitterInfo.php',displayTwitterContent);
});
</script>

$(文档).ready(函数(){
$.ajax('/content/getFacebookInfo.php',displayFacebookContent);
$.ajax('/content/gettwitterfo.php',displayTwitterContent);
});
然后在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>

var displayTwitterContent=函数(响应){
var html=“
    ”; foreach(var i在response.posts中){ html+=“
  • ”+response.posts[i]。message+“
  • ”; } html+=“
”; $('#标题信息).append(html); };
同样,这是为了展示这个概念而缩写的,您必须充实脚本并构建用JSON对象响应的php处理程序

通过将繁重的工作转移到AJAX处理程序中,主HTML很快就完成了,用户也很高兴。当他的眼睛在页面上移动时,一些AJAX调用将完成,您将动态地将可用数据插入DOM,他们将看到它


这有点像谷歌的边输入边搜索,它向服务器回拨AJAX,在你点击提交之前抓取内容让你实时显示。

你会想使用这种模式来获得最佳的用户体验

阿贾克斯是你的朋友

只发送您需要的最少信息,以便向用户显示页面的大纲

<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>

…脚本、元、css等。。。
Facebook信息
加载

推特信息 加载

然后在每个内容部分(您尚未加载)中都有一个微调器

在加载javascript的过程中(为了清晰起见,我对其进行了缩写……有关ajax调用的更多信息,请参阅),您可以调用特定的php页面,从而输出一些JSON。这是真正的工作发生的地方,需要时间

<script>
$(document).ready(function(){
   $.ajax('/content/getFacebookInfo.php',displayFacebookContent);
   $.ajax('/content/getTwitterInfo.php',displayTwitterContent);
});
</script>

$(文档).ready(函数(){
$.ajax('/content/getFacebookInfo.php',displayFacebookContent);
$.ajax('/content/gettwitterfo.php',displayTwitterContent);
});
然后在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>

var displayTwitterContent=函数(响应){
var html=“
    ”; foreach(var i在response.posts中){ html+=“
  • ”+response.posts[i]。message+“
  • ”; } html+=“
”; $('#标题信息).append(html); };
同样,这是为了展示这个概念而缩写的,您必须充实脚本并构建用JSON对象响应的php处理程序

通过将繁重的工作转移到AJAX处理程序中,主HTML很快就完成了,用户也很高兴。当他的眼睛在页面上移动时,一些AJAX调用将完成,您将动态地将可用数据插入DOM,他们将看到它


这有点像谷歌在你打字时的搜索,它会向服务器回拨一个AJAX电话,在你点击提交之前抓取内容让你实时显示。

非常适合在等待电话返回时阻止用户输入。非常适合在等待来电返回时阻止用户输入。感谢您提供的范例!我将研究ajax调用并使我的站点更快感谢您的范例!我将研究ajax调用并使我的站点更快