2012-04-06 93 views
5

在其文檔中,Facebook推薦爲其JavaScript SDK使用頻道文件。我的問題涉及如何創建此文件的一個小細節。很明顯,我必須創建和HTML文件的行<script src="//connect.facebook.net/en_US/all.js"></script>如何爲Facebook SDK創建「channel.html」文件

但是,然後Facebook推薦緩存這個文件儘可能長,並提供一個PHP腳本來做到這一點。我的問題是:我應該在哪裏放置這個腳本?在同一個channel.html文件中,我將在我的網站安裝的根目錄中(一個自主託管的WordPress博客)。

謝謝!

P.

回答

12

通道的文件被認爲只有代碼,你已經提到

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

你可以把緩存代碼的任何地方,最有可能它被放在索引文件。

+0

謝謝。這就是我一直在尋找的。 – Parneix 2012-04-06 14:53:02

+0

我已經把它放在我的WordPress博客的''部分。有用。 – Parneix 2012-04-10 01:40:58

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> 
5

我只是想強調幾點,我認爲點,一直忽視了這個特殊的Q &答:

(1)在我看來,我會說,「通道。由Facebook推薦的「html」代碼片段需要成爲一個單獨的文件 - 該片段不能被放入索引文件中,正如harry所推薦的(我假設他是指主頁或其他通用內容頁面,一個網站)。

如果你看一下URL的SCRIPT元素的src屬性點,這是在JS-SDK代碼異步調用完全相同的腳本:

connect.facebook.net/en_US/all.js

因此,將另一SCRIPT元素指向這個文件到索引頁面(或任何其他頁面)只是做一個完全浪費和冗餘的HTTP請求。有一個單獨的文件,即「channel.html」,這是Facebook解決跨域腳本(XSS)問題的一種方法。這個概念在更多的細節和更好的理解解釋比我的堆棧溢出文章中,Why do we need to create a channel.html on our server to use Facebook JS SDK?

(2)值得注意的是,如果你決定使用中的PHP代碼段「channel.html」文件中,有兩個選項在Facebook文檔中沒有明確說明:

(a)您可以使用PHP擴展名保存文件,例如「channel.php」,並更新JavaScript中的變量,如下所示: channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.php'

(b)您可以保留文件名「channel.html」並將服務器配置爲允許「.html」文件被處理爲PHP。

我還假設文件可以被調用任何東西,並存儲在您的Web服務器上的任何地方,只要它的值是在channelURL值中提供的。