2010-12-19 159 views
1

我正在研究一个插件,将被添加到外部网站,像Meebo/Wibiya酒吧。我正在研究如何版本化我的文件。版本控制网站插件(例如Wibiya酒吧,Meebo酒吧)

我想要什么来实现的:

  • 该网站只需要的<script>几行添加到他们的网站。
  • 我可以静静地升级他们使用的js文件,如果我选择的话,没有他们修改他们的代码。
  • 我可以为不同的网站提供不同的js文件。
  • JS文件将被缓存,除非它们改变。
  • 我将能够执行A/B测试(即,为单个网站加载2个不同的JS文件,为每个访问者随机选择)。

我该如何去实现所有这些目标?或者至少尽可能多的?

+0

您的第二个和第四个项目符号相互冲突。大多数第三方JS插件通过在其缓存上使用相当短的到期时间来处理此问题。它仍然可以被缓存,但是你不想做长时间的缓存。 24小时是第三方脚本的共同价值。 – Ian 2011-11-01 13:18:33

回答

0

在我的头顶,我认为像下面这样的东西应该让事情发展。

您可以使用某种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>标签来从服务器加载更多 脚本。