Я планирую использовать Azure CDN поверх библиотеки Sitecore Media, насколько я понимаю, Azure CDN не поддерживает ленивую загрузку, и единственный простой способ — это корень, описанный в соединителе Sitecore Azure CDN (в основном создание структуры папок MediaLibrary и файлов на событие публикации) Проблема, которую я вижу, связана с изображениями с измененным размером, в Sitecore вы можете динамически вызывать изменение размера элемента, передающего высоту и ширину в URL-адресе, но я не уверен, как справиться с этим с точки зрения CDN. Рад узнать ваше мнение и способы обхода этого ограничения. Стелио
Библиотека мультимедиа Sitecore и Azure CDN
Ответы (2)
Если вы используете Azure PaaS и используете WebRoles (например, при использовании модуля Sitecore Azure), вам будет проще интегрировать облачную службу с Azure CDN.
Я точно не знаю, какие у вас были планы по интеграции с Azure, но вместо того, чтобы беспокоиться о каких-либо обработчиках Sitecore и отправке файлов в Azure, я предлагаю вам настроить конечные точки CDN, а затем перенаправить все запросы мультимедиа в папку /cdn
. Это заставит Azure кэшировать ваш динамический контент, принимая во внимание любые параметры URL-адреса (например, изменение размера). Если контент не кэшируется, запрос следует получить из Sitecore, а затем кэшировать для любых будущих запросов, работая как пограничный сервер кэширования.
Самый простой способ воспользоваться этим — установить префикс медиа-ссылки:
<setting name="Media.MediaLinkPrefix" value="cdn/media" />
Затем вы можете использовать модуль URLRewrite, чтобы сопоставить cdn/media
обратно с ~/media
. Или просто добавьте обработчики для этого в Sitecore:
<customHandlers>
<handler patch:before="*[@trigger='~/media/']" trigger="cdn/media/" handler="sitecore_media.ashx" />
</customHandlers>
<mediaLibrary>
<mediaPrefixes>
<prefix value="cdn/media"/>
<prefix value="~/media"/>
</mediaPrefixes>
</mediaLibrary>
Возможно, вы захотите сделать это только в среде компакт-диска. Кроме того, вы также можете воспользоваться этим для своих статических изображений. Вам нужно будет убедиться, что все они также имеют префикс /cdn
, но если папка была /cdn/images
, тогда у вас может быть другое правило перезаписи URL-адресов, чтобы сопоставить это обратно с /images
.
Некоторая дополнительная информация:
- Использование Сеть доставки контента (CDN) Windows Azure — см. раздел
Using cloud services with the CDN
и далее - Публикация контента на Azure CDN с URLRewrite
- Интеграция облачной службы с Azure CDN а>
К сожалению, у меня нет доступа к экземпляру Azure, поэтому я не могу это проверить.
ОБНОВЛЕНИЕ: я написал статью об интеграции Sitecore с Azure, хотя она достаточно общая, чтобы работать с любым поставщиком CDN и любой версией Sitecore, если вы перезаписываете обработчик мультимедиа. Дополнительную информацию можно найти здесь: Настройка Azure CDN для доставки мультимедиа Sitecore.
"There are only two hard things in Computer Science: cache invalidation and naming things"
:) Вы можете добавить дату изменения элемента мультимедиа в качестве параметра строки запроса, просто переопределите MediaManager, чтобы всегда включать это.
- person jammykam; 05.03.2015
Ну, может быть, это не решение в вашем случае, но я бы выбрал другой CDN. Это ограничение в Azure CDN накладывает слишком большие ограничения на ваше решение. Как вы описываете, вам действительно следует использовать функцию изменения размера в Sitecore, чтобы сохранить хорошую архитектуру и поддерживаемый код.
Другие люди также столкнулись с той же проблемой и выбрали другие варианты CDN, такие как Akamai и AWS CloudFront: http://feedback.azure.com/forums/169397-cdn/suggestions/3046714-custom-origin.-support-to-cdn