2016-12-02 2 views
0

У меня есть новый экземпляр Sitecore 8.1. Sitecore загружает изображения через медиа-обработчик с такими URL-адресами: «/-/media/Images/FOLDER/IMAGENAME.jpg». Обработчик среды Sitecore должен запускаться так, чтобы он мог найти изображение в базе данных Sitecore, а затем вернуть фактический файл изображения (изображение не существует на диске). Я никогда не мог заставить ImageResizer обрабатывать изображения Sitecore, так как Sitecore собирается украсть запрос, а не позволять ImageResizer обрабатывать его. Имеет смысл.Плагин для кэша для диска с Sitecore

я реализовал пользовательский трубопровод в Sitecore, который работает очень хорошо, однако:

var settings = new ResizeSettings(HttpContext.Current.Request.QueryString); 
ImageBuilder.Current.Build(args.OutputStream.Stream, stream, settings); 
args.OutputStream = new MediaStream(stream, args.MediaData.Extension, args.MediaData.MediaItem); 

Это будет возвращать изменения размера изображения клиенту успешно. Однако я понятия не имею, как включить дисковый кеш, чтобы он не обрабатывал каждый запрос resizer по запросу, и я не нашел никаких ресурсов для этой проблемы.

Есть ли что-нибудь, что я могу сделать, чтобы избежать моего настраиваемого конвейера и включить собственный ImageResizer, чтобы я мог использовать плагин DiskCache с моим сценарием (Sitecore Media)? Или есть способ, которым я могу изменить свой конвейер, чтобы использовать класс DiskCache, чтобы настроить мой собственный?

Спасибо!

ответ

1

Почему вы хотите использовать собственный имитатор?

Уверен, что это возможно, но знаете ли вы, что утилита Sitecore, которую вы уже используете, также может изменить размер исходных загруженных изображений, добавив параметры повтора? Это решает вопрос кэширования, и вам не нужно создавать собственный плагин.

Итак, я бы настоятельно рекомендовал использовать для этого функциональные возможности sitecore по умолчанию, так как sitecore автоматически сохранит измененное изображение на диске (в качестве кеша диска, что значительно повысит производительность для любого следующего запроса того же изображения с помощью тот же параметр), и sitecore воссоздает кеш, если все эти временные файлы удаляются (например, с новой установкой/развертыванием)

Вы можете изменить размер изображения, просто добавив параметры в свой URL-адрес изображения. Итак, когда URL-адрес вашего изображения /-/media/Images/FOLDER/IMAGENAME.jpg , вы можете установить ширину, добавив параметр w.
/-/media/Images/FOLDER/IMAGENAME.jpg?w=150 И высота, добавляя параметр h.

Возможны следующие параметры:

  • ш: Ширина в пикселях
  • ч: Высота в пикселях
  • MW: Максимальная ширина в пикселях
  • МХ: Максимальная высота в пикселях
  • la: Язык (по умолчанию используется контекстный язык)
  • vs: Version (по умолчанию - последняя версия)
  • БД: Имя базы данных (по умолчанию контекст базы данных)
  • BC: Цвет фона (по умолчанию черный)
  • как: Разрешить растяжение (как = 1)
  • SC: Шкала с плавающей запятой (SC =.25 = 25%)
  • THN: миниатюрное (THN = 1)
  • ДМЦ: Отключить кэширование средств массовой информации, как извлечение и хранение (ДМК = 1)

Обратите внимание, что есть еще одна вещь, чтобы принять во Счет. Перед тем, как начать добавлять значение строки запроса к вашему Medialibrary изображений, вы должны быть уверены, чтобы найти эту конфигурацию установки

      <setting name="Media.RequestProtection.Enabled" value="false"> 

Значение по умолчанию верно, что будет означать, что вам нужно добавить дополнительный хэш строки запроса каждое изображения прежде чем он будет изменен. Установка его в значение «ложь» позволит вам поэкспериментировать с визуализацией и познакомиться с ним, но оставить этот параметр в false не рекомендуется в рабочей среде! Это означает, что в конечном итоге вам нужно будет установить значение хэша для каждого изображения для изображений, где вы хотите использовать параметры изменения размера. То, как вы можете это сделать, довольно просто. Просто передать URL к изображению вместе будет все его изменения размера параметры в следующем коде: (. Ех компрессия качества)

var url = "/-/media/Images/FOLDER/IMAGENAME.jpg?w=150"; 
url = Sitecore.Resources.Media.HashingUtils.ProtectAssertUrl(url) 
+0

Есть ряд особенностей ImageResizer, которые не предусмотрены в образе Sitecore в изменении размеров функциональности. Я решил исправить свою проблему, используя ImageResizer для изменения размера изображения, но используя функцию MediaCache от Sitecore, чтобы кэшировать результат, а не плагин ImageCesizer DiskCache. – kamojoe

Смежные вопросы