Плагин управления версиями сайта (например, панель Wibiya, панель Meebo) - PullRequest
1 голос
/ 19 декабря 2010

Я работаю над плагином, который будет добавлен на внешние сайты, что-то вроде панели Meebo / Wibiya.Я изучаю, как создать версию моих файлов.

Чего я хочу достичь:

  • Веб-сайт должен добавить только несколько строк <script> на свой сайт.
  • Я смогу без предупреждения обновить файл js, который они используют, если я решу, без изменения кода.
  • Я смогу обслуживать разные файлы js для разныхвеб-сайты.
  • Файлы JS будут кэшироваться, если они не изменятся.
  • Я смогу выполнить A / B-тесты (т. е. иметь 2 разных файла JS, загруженных для одного веб-сайта, выбранных случайным образом)для каждого посетителя).

Как мне достичь всех этих целей?Или, по крайней мере, как можно больше из них?

1 Ответ

0 голосов
/ 20 декабря 2010

В общем, я думаю, что что-то вроде следующего должно привести в движение.

Вы можете использовать какой-то ключ API для идентификации удаленных сайтов, вы также можете использовать реферер HTTP, но этоне совсем надежныйЗатем скопируйте действия Google 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>, как указано выше.

...