From 42ab42e6e238d753d8dab5d3cd4667488817f0b8 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 4 Oct 2013 17:05:27 -0700 Subject: [PATCH] Caching media profile queries --- .../Services/ImageProfileService.cs | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs index 0eb628fe9..d5401ecae 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Orchard.Caching; using Orchard.ContentManagement; using Orchard.Data; using Orchard.Localization; @@ -8,10 +9,15 @@ using Orchard.MediaProcessing.Models; namespace Orchard.MediaProcessing.Services { public class ImageProfileService : IImageProfileService { private readonly IContentManager _contentManager; + private readonly ICacheManager _cacheManager; private readonly IRepository _filterRepository; - public ImageProfileService(IContentManager contentManager, IRepository filterRepository) { + public ImageProfileService( + IContentManager contentManager, + ICacheManager cacheManager, + IRepository filterRepository) { _contentManager = contentManager; + _cacheManager = cacheManager; _filterRepository = filterRepository; } @@ -22,7 +28,25 @@ namespace Orchard.MediaProcessing.Services { } public ImageProfilePart GetImageProfileByName(string name) { - return _contentManager.Query().Where(x => x.Name == name).Slice(0, 1).FirstOrDefault(); + + var profileId = _cacheManager.Get("ProfileId", ctx => { + var profile = _contentManager.Query() + .Where(x => x.Name == name) + .Slice(0, 1) + .FirstOrDefault(); + + if (profile == null) { + return -1; + } + + return profile.Id; + }); + + if (profileId == -1) { + return null; + } + + return _contentManager.Get(profileId); } public IEnumerable GetAllImageProfiles() {