在其文档中,Facebook建议为其JavaScript SDK使用频道文件。我的问题涉及有关如何创建此文件的小细节。很明显,我必须使用行<script src="//connect.facebook.net/en_US/all.js"></script>
然后Facebook建议尽可能长时间地缓存此文件并提供PHP脚本来执行此操作。我的问题是:我应该把这个脚本放在哪里?在我将放置在我的网站安装的根目录中的channel.html
文件中(自托管的Wordpress博客)。
谢谢!
P上。
答案 0 :(得分:12)
频道文件应该只包含您已经提到过的代码
<script src="//connect.facebook.net/en_US/all.js"></script>
您可以将缓存代码放在任何位置,并且很可能将其放在索引文件中。
答案 1 :(得分:5)
我想强调一下我认为在这个特定的Q&amp; A中忽略的几点:
(1)在我看来,我会说Facebook推荐的“channel.html”代码片段需要是一个单独的文件 - 片段不能只是放入索引文件中,正如哈里推荐的那样(我假设他是指主页或网站的其他通用内容页面。)
如果查看SCRIPT
元素的src
属性指向的URL,它就是在JS-SDK代码中异步调用的完全相同的脚本:
connect.facebook.net/en_US/all.js
因此,将指向此文件的另一个SCRIPT
元素放入索引页(或任何其他页面)只会产生完全浪费且冗余的HTTP请求。有一个单独的文件,即“channel.html”的全部意义,是Facebook解决跨域脚本(XSS)问题的一种方式。这个概念的解释比我在Stack Overflow文章中的更详细和更好理解,“Why do we need to create a channel.html on our server to use Facebook JS SDK?”
(2。)值得注意的是,如果您决定在“channel.html”文件中使用PHP代码段,那么您有两个选项在Facebook文档中没有明确说明:
(a)您可以使用PHP扩展名保存文件,例如“channel.php”,并在JavaScript中更新变量,如下所示:
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.php'
(b)您可以保留文件名“channel.html”并配置服务器以允许“.html”文件作为PHP处理。
我还假设该文件可以被调用,并存储在您的Web服务器上的任何位置,只要它的URL在channelURL
值中提供。
答案 2 :(得分:3)
您可以创建channel.php
而不是channel.html
并在其中加入以下代码。
<?php
$cache_expire = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: maxage=".$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>