Автоматический переход к стратегии развертывания CDN
У кого-нибудь есть идеи для стратегии, направленной на передачу контента в CDN при развертывании?
Ключевой вопрос, с которым я сталкиваюсь, заключается в том, что у нас есть сайт, который доступен в различных контекстах: локальная разработка, сервер разработки, подготовка, а затем, наконец, живой.
Печеночная версия сайта должна загружать ресурсы из домена, который будет указывать на CDN: assets.domain.com.
Тем не менее, у нас будет множество ссылок на ресурсы, указывающие на относительную папку, например / images / in css, возможно, в js, а также в HTML & source.
Наш новый сайт будет использовать capistrano для развертывания, и может случиться так, что мы сможем подключить другой инструмент для сборки (apache ant?) Или какой-нибудь специальный скрипт для поиска / замены путей.
Мне интересно, сталкивался ли кто-нибудь с этой проблемой раньше и какие решения вы внедрили для автоматизации управления CDN с точки зрения передачи контента в CDN и управления ссылками html & css на активы в CDN.
Спасибо
Imanc
1 ответ
Вообще говоря, в CDN используется кэширование по запросу, а не репликация по запросу.
Это связано с тем, что доставка большого (с учетом всех их клиентов) объема контента в любое значительное количество распределенных узлов является сложной проблемой распределенных систем, и предвидеть будущие схемы трафика для оптимизации такого распределения еще сложнее.
Хотя некоторые (например, Akamai) действительно предоставляют возможность аннулировать контент в сети, обычно это считается "переключателем паники", а не тем, что вы можете интегрировать в процесс развертывания.
Некоторые могут также предлагать "промежуточные серверы", на которые вы можете поместить свой контент, но на самом деле он не входит в CDN; скорее, CDN будет просто извлекать контент со своих собственных серверов, когда происходит трафик. Это может быть достаточно для того, что вы хотите (обычно они предлагают FTP, SSH и другие интерфейсы).
В противном случае лучше всего подождать, пока не истечет время ожидания установленных вами TTL (например, Cache-Control: max-age) и обновить содержимое, если оно обратно совместимо, или изменить URL-адреса при это не так