Библиотека мультимедиа Sitecore и Azure CDN

Я планирую использовать Azure CDN поверх библиотеки Sitecore Media, насколько я понимаю, Azure CDN не поддерживает ленивую загрузку, и единственный простой способ — это корень, описанный в соединителе Sitecore Azure CDN (в основном создание структуры папок MediaLibrary и файлов на событие публикации) Проблема, которую я вижу, связана с изображениями с измененным размером, в Sitecore вы можете динамически вызывать изменение размера элемента, передающего высоту и ширину в URL-адресе, но я не уверен, как справиться с этим с точки зрения CDN. Рад узнать ваше мнение и способы обхода этого ограничения. Стелио


person Stelio    schedule 02.03.2015    source источник


Ответы (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.

Некоторая дополнительная информация:

К сожалению, у меня нет доступа к экземпляру Azure, поэтому я не могу это проверить.

ОБНОВЛЕНИЕ: я написал статью об интеграции Sitecore с Azure, хотя она достаточно общая, чтобы работать с любым поставщиком CDN и любой версией Sitecore, если вы перезаписываете обработчик мультимедиа. Дополнительную информацию можно найти здесь: Настройка Azure CDN для доставки мультимедиа Sitecore.

person jammykam    schedule 04.03.2015
comment
Привет, Кам. На самом деле вы правы, теперь вы можете настроить CDN так, чтобы он указывал на папку /CDN, а с правилом перезаписи на компакт-диске и Media.MediaLinkServerUrl это легкая жизнь... единственный вопрос может быть связан с обновлением медиабиблиотеки. элементы и аннулирование кэшированной версии на cdn, я думаю, что простой вариант должен быть с некоторыми манипуляциями с медиаэлементами или просто переименованием.... - person Stelio; 05.03.2015
comment
Да - "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

person mikaelnet    schedule 04.03.2015
comment
Ну, единственная альтернатива, которую я рассматриваю в краткосрочной перспективе, — это использование Azure CDN для статических изображений и использование библиотеки мультимедиа без CDN для изображений с измененным размером и просьба к команде разработчиков изменить размер изображений перед загрузкой, чтобы избежать проблем с производительностью... - person Stelio; 04.03.2015