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() {