2010-12-19 129 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>標籤來從服務器加載更多 腳本。