现在我的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>
我想将其缩小为纯文件服务:
<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
是基于签名请求而变化的变量。这有什么不同吗?
答案 0 :(得分:1)
对于JS SDK的硬编码应该是“安全的”,只要它仍然是Facebook托管的版本。不同的语言环境不太可能不同步,不同文件之间的唯一区别是面向用户的字符串。
但是,我强烈建议您使用相同的网址,而不是硬编码一个区域设置。原因是如果您使用两个不同的URL,浏览器可能必须下载两次SDK。该库很大,因此可能会造成严重的用户体验问题。
当然,如果用户经常浏览使用en_US SDK的其他网站以及他自己的语言环境中的版本,则不太可能发生这种情况。如果文件被缓存,这将不是问题。