2015-10-26 4 views
0

Я заглядывал в настройки кэширования для медиа в web.config и узнал, что что-то нуждается в некоторых разъяснениях. Я нашел один параметр под названием «MediaResponse.MaxAge». Я думаю, что этот параметр заключается в том, чтобы установить срок действия кеша в заданный формат «Days.hours: minutes: seconds», и мы установили его на семь дней «7.00: 00: 00».Sitecore 8: кэширование для медиа-изображений

Теперь я смущен, так как изображения на нашем сайте загружаются слишком медленно (проверено через pingdom) даже после того, как кеширование длится семь дней. Кроме того, с помощью скрипача, если кеш изображения установлен на семь дней, и это происходит.

snap from 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

Все благодарности/предложения были оценены.

+0

Настройка MaxAge не заставит изображения загружаться быстрее. Он просто скажет браузеру кэшировать это изображение в течение 7 дней, чтобы в следующий раз он не загрузил его с сервера. Есть много вещей, которые могут повлиять на скорость загрузки изображения в Sitecore - есть ли у вас какие-либо пользовательские конвейерные процессоры? –

+0

Да .. я представил логику в переработке процессора, где я решаю, следует ли кэшировать изображения. –

+0

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

ответ

1

Нам нужно было что-то подобное. Редакторы контента загружают изображения больших размеров, и мы используем настраиваемый медиа-запрос для обрезки/изменения размера и кэширования этих изображений. Я написал об этом blogpost with sample code. Это должно делать свое дело. Это позволит вам кэшировать любое количество размеров для одного и того же изображения.

+1

@Sullivan: спасибо за обновление ссылки! –

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