Я заглядывал в настройки кэширования для медиа в web.config и узнал, что что-то нуждается в некоторых разъяснениях. Я нашел один параметр под названием «MediaResponse.MaxAge». Я думаю, что этот параметр заключается в том, чтобы установить срок действия кеша в заданный формат «Days.hours: minutes: seconds», и мы установили его на семь дней «7.00: 00: 00».Sitecore 8: кэширование для медиа-изображений
Теперь я смущен, так как изображения на нашем сайте загружаются слишком медленно (проверено через pingdom) даже после того, как кеширование длится семь дней. Кроме того, с помощью скрипача, если кеш изображения установлен на семь дней, и это происходит.
Вот скриншот, который показывает время загрузки для 6 кб изображения. !!
желто- Подождите
Green-Приобретенный
Реализована функция в классе перекрывая трубопровод ResizeProcessor:
void SaveStreamToCache(MediaStream outputStream, TransformationOptions transformationOptions, ImageFormat imageFormat, Stream img)
{
if (_cacheError > 5) return;
try
{
if (img == null || img.Length == 0) return;// don't save empty data.
byte[] imageByteArray = ((MemoryStream)img).ToArray();
HttpRuntime.Cache.Add(GetKey(outputStream, transformationOptions, imageFormat), imageByteArray,
null, DateTime.Now.AddMinutes(1),
Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
catch (Exception e)
{
Log.Error(e.ToString(), this);
_cacheError++;
}
}
GetKey() возвращает строку, состоящую из свойств изображения в качестве URL.
string GetKey(MediaStream outputStream, TransformationOptions transformationOptions, ImageFormat imageFormat)
{
StringBuilder sb = new StringBuilder("SitecoreExtensions.Resources.Media.ResizeProcessor_");
sb.Append("_MediaItem.Path_" + outputStream.MediaItem == null ? "<NULL>" : outputStream.MediaItem.Path);
sb.Append("_MediaItem.MediaPath_" + outputStream.MediaItem == null ? "<NULL>" : outputStream.MediaItem.MediaPath);
sb.Append("_MediaItem.FilePath_" + outputStream.MediaItem == null ? "<NULL>" : outputStream.MediaItem.FilePath);
sb.Append("_AllowStretch_" + transformationOptions.AllowStretch.ToString());
sb.Append("_BackgroundColor_" + transformationOptions.BackgroundColor.ToString());
sb.Append("_CompositingMode_" + transformationOptions.CompositingMode.ToString());
sb.Append("_IgnoreAspectRatio_" + transformationOptions.IgnoreAspectRatio.ToString());
sb.Append("_InterpolationMode_" + transformationOptions.InterpolationMode.ToString());
sb.Append("_MaxSize_" + transformationOptions.MaxSize.ToString());
sb.Append("_PixelOffsetMode_" + transformationOptions.PixelOffsetMode.ToString());
sb.Append("_PreserveResolution_" + transformationOptions.PreserveResolution.ToString());
sb.Append("_Quality_" + transformationOptions.Quality.ToString());
sb.Append("_Scale_" + transformationOptions.Scale.ToString());
sb.Append("_Size_" + transformationOptions.Size.ToString());
sb.Append("_imageFormat_" + imageFormat.ToString());
return sb.ToString();
}
Какие настройки должны быть применены для того, чтобы сократить время ожидания ?? Репутация this article
Все благодарности/предложения были оценены.
Настройка MaxAge не заставит изображения загружаться быстрее. Он просто скажет браузеру кэшировать это изображение в течение 7 дней, чтобы в следующий раз он не загрузил его с сервера. Есть много вещей, которые могут повлиять на скорость загрузки изображения в Sitecore - есть ли у вас какие-либо пользовательские конвейерные процессоры? –
Да .. я представил логику в переработке процессора, где я решаю, следует ли кэшировать изображения. –
Попробуйте удалить этот конвейер, чтобы проверить, влияет ли оно на производительность. По моему опыту, изображения, поступающие из Sitecore, обычно довольно быстр, особенно для небольших изображений. –