В общем, я думаю, что что-то вроде следующего должно привести в движение.
Вы можете использовать какой-то ключ 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>
, как указано выше.