facebook iframe app - 如何组织和编写代码以加快页面加载 - PHP SDK

时间:2011-11-08 12:00:21

标签: facebook http-headers facebook-php-sdk

我正在facebook iframe中编写一个应用程序,我不确定如何最好地编写它。我最初在canvas.php主文件中编写了所有代码,但发现在将结果加载到iframe之前,所有内容都运行得太慢了。

然后我尝试使用php标头位置方法,以便尝试将不同的页面加载到iframe中,从而减少页面加载时间。但是,标头位置将被忽略。

我也尝试使用javascript来在iframe中加载页面,这确实会在新页面加载,但页面会遇到很多问题。它不会使用$ _GET将parrameteres传递给它自己。

基本上,我需要在首次在iframe中加载画布页面时执行一些检查,然后重新定向到另一个文件,以避免在每次页面加载时执行检查,因为这会严重显示所有内容。然后,我需要在URL中使用不同的parrameteres进行页面重新加载以填充具有不同结果的iframe,再次这非常慢,因为它必须再次执行所有检查。

因此,如何在facebook iframe中实现平滑的工作流程?

[编辑]刚才认为Ajax是一个有效的选择吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

由于没有指定channelURL,大多数人的响应时间都很慢。见http://developers.facebook.com/docs/reference/javascript/

  

频道文件

     

频道文件解决了跨域通信的一些问题   在某些浏览器中。 channel.html文件的内容可以是   一行:

            

通道文件的缓存非常重要   可能。提供此文件时,您必须发送有效的Expires标头   期限很长。这将确保通道文件   浏览器缓存,这对于流畅的用户体验非常重要。   如果没有适当的缓存,跨域通信将变得非常   缓慢,用户将遭受严重退化的经历。一个简单的   在PHP中执行此操作的方法是:

     

     

channelUrl参数是可选的,但建议使用。提供一个   通道文件可以帮助解决三个特定的已知问题。第一,   包含跨帧通信的代码的页面可能会导致社交   没有channelUrl的插件显示为空白。第二,如果没有   提供channelUrl,页面包括自动播放音频或   视频,用户可能会听到两个音频流,因为页面有   已在背景中第二次加载跨域   通讯。第三,通道文件将阻止包含额外的   点击服务器端日志。如果你没有指定channelUrl,那么你   可以删除包含fb_xd_bust或fb_xd_fragment的页面视图   日志中的参数以确保正确计数。

     

channelUrl必须是与页面匹配的完全限定URL   你包括SDK。换句话说,通道文件域   如果您的网站使用www提供,并且如果您修改,则必须包含www   您的网页上的document.domain必须创建相同的document.domain   也改变了channel.html文件。协议也必须   比赛。如果您的网页是通过https投放的,那么您的channelUrl也必须是   HTTPS。请记住使用脚本src的匹配协议   好。上面的示例代码使用协议相对URL   正确处理大多数https案例。