2010-12-19 5 views
1

Ich arbeite an einem Plugin, das auf externe Seiten hinzugefügt werden, so etwas wie die Meebo/Wibiya bar. Ich untersuche, wie ich meine Dateien versionieren kann.Versioning Website Erweiterungen (z Wibiya bar, Meebo bar)

Was ich will, erreichen:

  • Die Website hat nur ein paar Zeilen <script> auf ihrer Website hinzuzufügen.
  • Ich werde in der Lage sein, geräuschlos die js Datei, die sie verwenden, zu aktualisieren, wenn ich zu wählen, ohne dass sie ihren Code zu modifizieren.
  • Ich kann verschiedene js-Dateien für verschiedene Websites dienen.
  • JS-Dateien werden zwischengespeichert, sofern sie sich nicht ändern.
  • Ich werde in der Lage A/B-Tests (das heißt, hat 2 verschiedene JS-Dateien für eine einzelne Website geladen wird, zufällig für jeden Besucher ausgewählt) durchzuführen.

Wie kann ich all diese Ziele erreichen? Oder mindestens so viele wie möglich?

+0

Ihre zweiten und vierten Aufzählungszeichen stehen in Konflikt zueinander. Die meisten JS-Plugins von Drittanbietern behandeln dies, indem sie eine relativ kurze Ablaufzeit in ihrem Cache verwenden. Es kann immer noch zwischengespeichert werden, aber Sie möchten den Cache nicht lange auslaufen lassen. 24 Stunden ist ein üblicher Wert für Skripts von Drittanbietern. – Ian

Antwort

0

Von der Spitze von meinem Kopf, ich glaube, so etwas wie die folgenden sollten bewegen Dinge.

Sie könnten eine Art API-Schlüssel verwenden, um die Remote-Standorte zu identifizieren, Sie könnten auch den HTTP-Verweis verwenden, aber das ist nicht vollständig zuverlässig. Kopieren Sie dann, was Google Analytics funktioniert und erhalten die Kunden ein wenig JavaScript wie diese einzubetten:

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); 
})(); 

, dass Ihre ersten zwei Punkte erfüllen sollte.

Auf der Serverseite extrahieren Sie den API-Schlüssel aus dem eingehenden Pfad, dieser Schlüssel sagt Ihnen, welche Website Sie sprechen, so können Sie zurück senden , was auch immer JavaScript geeignet ist. Sie können die HTTP-Caching-Header verwenden, um zu versuchen, das Zwischenspeichern zu steuern. Das sollte auf Punkte zwei und drei aufpassen.

Die letzte Forderung ist ein wenig interessanter, aber nichts unmöglich. Das Skript Sie zurück immer mehrere Renderings oder Verhaltensweisen unterstützen kann senden, kann das Skript auch, welches Verhalten basierend auf unabhängig von Bedingungen wählen Sie sich vorstellen können. Das Skript kann auch mehr Skripte von Ihrem Server laden, indem Sie mehr <script> Tags wie oben erstellen.