IE7中的Facebook频道URL递归问题
我正在为一个网站异步加载FBJSSDK,该网站具有一些共享功能(将文章、视频、照片等共享到用户的时间线)。在大多数情况下,一切都很正常,但在IE7中,我注意到不断有请求发送到我的channelUrl。他们似乎永远不会结束。它并没有完全破坏网站,但我不想继续发送所有这些请求。我不知道是什么原因导致了这种情况,任何帮助都将不胜感激 我的应用程序设置如下: 应用程序域-mydomain.com 网站网址- (注意:如果不清楚的话,mydomain只是我用来回答这个问题的一个例子。) 我的FB.Init呼叫是IE7中的Facebook频道URL递归问题,facebook,facebook-graph-api,internet-explorer-7,facebook-javascript-sdk,Facebook,Facebook Graph Api,Internet Explorer 7,Facebook Javascript Sdk,我正在为一个网站异步加载FBJSSDK,该网站具有一些共享功能(将文章、视频、照片等共享到用户的时间线)。在大多数情况下,一切都很正常,但在IE7中,我注意到不断有请求发送到我的channelUrl。他们似乎永远不会结束。它并没有完全破坏网站,但我不想继续发送所有这些请求。我不知道是什么原因导致了这种情况,任何帮助都将不胜感激 我的应用程序设置如下: 应用程序域-mydomain.com 网站网址- (注意:如果不清楚的话,mydomain只是我用来回答这个问题的一个例子。) 我的FB.Init
FB.init({
appId: XXXXXXXXXXXXX,
channelUrl: '//' + window.location.hostname + '/channel.html',
status: true,
cookie: true,
xfbml: true
});
根据文档,您可能必须编辑频道url文件的缓存,以确保不会发生这种情况: --向下读取到标题为“通道文件”的位置 引述: “尽可能长时间地缓存通道文件非常重要。提供此文件时,您必须发送有效的过期标头,过期时间较长。这将确保浏览器缓存通道文件,这对于流畅的用户体验非常重要。如果没有适当的缓存,跨域通信将变得非常缓慢。”nd用户的体验将严重退化。在PHP中实现这一点的简单方法是:
“通道文件”的意义在于它有助于跨域ajax请求。如果没有缓存,FBAPI会在每次需要从facebook本身插入和执行一些javascript时请求它。如果在客户端的浏览器上缓存它,它只使用空白HTML文件的本地副本,而不是每次请求时都会发出请求。看看跨域ajax请求是如何执行的。我将研究一个好的链接,然后回来描述xdr(跨域请求)
编辑:
<?php
$cache_expire = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: max-age=".$cache_expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>