0

现在我的channel.html文件如下所示:

<?php
require_once __DIR__ . '/ay/includes/config.inc.php';

session_set_cookie_params(7200, '/' . AY_PROJECT_ID . '/', 'dev.anuary.com', FALSE, FALSE);

session_start();

$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/<?=$_SESSION['ay']['fb']['user']['locale']?>/all.js"></script>

我想将其简化为纯 HTML 文件服务:

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

现在,使用以下方法包含原件all.js

(function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = 'https://connect.facebook.net/' + ay.locale + '/all.js';

    d.getElementsByTagName('head')[0].appendChild(js);
}(document));

ay.locale是根据签名请求更改的变量。这有什么区别吗?

4

1 回答 1

1

对 JS SDK 进行硬编码应该是“安全的”,只要它仍然是 Facebook 托管的版本。不同的语言环境不太可能不同步,不同文件之间的唯一区别是面向用户的字符串。

但是,我强烈建议使用相同的 URL而不是硬编码一个语言环境。这样做的原因是,如果您使用两个不同的 URL,浏览器可能需要两次下载 SDK。该库很大,因此可能会造成严重的用户体验问题。

当然,如果用户经常浏览其他使用 en_US SDK 和自己语言环境版本的网站,这种情况发生的可能性较小。如果文件被缓存,这将不是问题。

于 2012-04-19T18:06:07.420 回答