我正在瀏覽web.config中的媒體緩存設置,並發現需要一些解釋。我發現了一個名爲「MediaResponse.MaxAge」的設置。我認爲這個設置是將緩存過期設置爲給定格式「Days.hours:minutes:seconds」,我們將它設置爲7天「7.00:00:00」。Sitecore 8:緩存媒體圖像
即使允許緩存持續7天,我們也很困惑,因爲我們網站上的圖片加載速度太慢(通過pingdom檢查)。此外,如果圖像緩存設置爲七天並且確實如此,則通過提琴手進行驗證。
下面是示出了用於一個6kb的圖像加載時間的屏幕截圖。 !
黃色 - 等待
綠 - 獲得性
實現的功能中的一類重寫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的圖像通常非常快,特別是對於較小的圖像。 –