我正在facebook iframe中编写一个应用程序,我不确定如何最好地编写它。我最初在canvas.php主文件中编写了所有代码,但发现在将结果加载到iframe之前,所有内容都运行得太慢了。
然后我尝试使用php标头位置方法,以便尝试将不同的页面加载到iframe中,从而减少页面加载时间。但是,标头位置将被忽略。
我也尝试使用javascript来在iframe中加载页面,这确实会在新页面加载,但页面会遇到很多问题。它不会使用$ _GET将parrameteres传递给它自己。
基本上,我需要在首次在iframe中加载画布页面时执行一些检查,然后重新定向到另一个文件,以避免在每次页面加载时执行检查,因为这会严重显示所有内容。然后,我需要在URL中使用不同的parrameteres进行页面重新加载以填充具有不同结果的iframe,再次这非常慢,因为它必须再次执行所有检查。
因此,如何在facebook iframe中实现平滑的工作流程?
[编辑]刚才认为Ajax是一个有效的选择吗?
非常感谢提前。
答案 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案例。