5

在其文档中,Facebook 建议为其 JavaScript SDK 使用通道文件。我的问题涉及有关如何创建此文件的一个小细节。很明显,我必须使用该行创建 HTML 文件<script src="//connect.facebook.net/en_US/all.js"></script>

但随后 Facebook 建议尽可能长时间地缓存此文件并提供 PHP 脚本来执行此操作。我的问题是:我应该把这个脚本放在哪里?channel.html在我将放置在我的网站安装根目录中的同一个文件中(一个自托管的 Wordpress 博客)。

谢谢!

P。

4

3 回答 3

12

频道文件应该只有您已经提到的代码

<script src="//connect.facebook.net/en_US/all.js"></script>

您可以将缓存代码放在任何地方,并且很可能将其放在索引文件中。

于 2012-04-06T14:25:47.807 回答
5

我想强调一下我认为在这个特定的问答中被忽略的几点:

(1) 在我看来,我会说 Facebook 推荐的“channel.html”代码片段需要是一个单独的文件——片段不能像 harry 推荐的那样仅仅放入索引文件中(通过我假设他的意思是主页或网站的其他通用内容页面)。

如果查看SCRIPT元素src属性指向的 URL,它与 JS-SDK 代码中异步调用的脚本完全相同:

connect.facebook.net/en_US/all.js

因此,将另一个SCRIPT指向该文件的元素放入索引页面(或任何其他页面)只是在进行完全浪费和冗余的 HTTP 请求。存在单个文件(即“channel.html”)的全部意义在于 Facebook 解决跨域脚本 (XSS) 问题的一种方式。这个概念比我在 Stack Overflow 文章“为什么我们需要在我们的服务器上创建一个 channel.html 来使用 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值中提供。

于 2013-07-02T18:06:40.413 回答
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>
于 2013-05-30T16:27:50.820 回答