在我的头顶,我认为像下面这样的东西应该让事情发展。
您可以使用某种API密钥来识别远程站点,您也可以使用HTTP referer,但这并不完全可靠。然后,复制是谷歌Analytics(分析)确实并获得客户 嵌入的JavaScript的一点点像这样:
var _edan_cfg = _edan_cfg || { };
_edan_cfg.apiKey = 'The-API-key-goes-here'; // Just in case you want it later.
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.async = true;
e.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
+ '.your-domain-name.com/some_sensible_path/'
+ encodeURIComponent(_edan_cfg.apiKey);
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
})();
这应该满足你的第一个两分。
在服务器端,您从传入路径中提取API密钥, 该密钥告诉您您正在与哪个网站交谈,因此无论使用哪种JavaScript,都可以发回 。您可以使用HTTP缓存 标题来尝试控制缓存。这应该照顾 点二和三。
最后一项要求是有趣一点,但没有不可能的。 您发回的脚本始终可以支持多个渲染或 行为,脚本还可以根据您可以想到的任何条件选择基于 的行为。该脚本还可以通过创建更多<script>
标签来从服务器加载更多 脚本。
您的第二个和第四个项目符号相互冲突。大多数第三方JS插件通过在其缓存上使用相当短的到期时间来处理此问题。它仍然可以被缓存,但是你不想做长时间的缓存。 24小时是第三方脚本的共同价值。 – Ian 2011-11-01 13:18:33