From 351cfef7a70ef311801be0bc9eb9e3891265d22b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 3 Feb 2014 23:04:19 -0500 Subject: use conditional caching on some json responses --- .../HttpServer/HttpResultFactory.cs | 34 ++++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs') diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs index 9359261c5..3712a58f5 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs @@ -1,9 +1,10 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Serialization; +using ServiceStack; +using ServiceStack.Web; using System; using System.Collections.Generic; using System.Globalization; @@ -11,8 +12,6 @@ using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; -using ServiceStack; -using ServiceStack.Web; using MimeTypes = MediaBrowser.Common.Net.MimeTypes; namespace MediaBrowser.Server.Implementations.HttpServer @@ -27,14 +26,18 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// private readonly ILogger _logger; private readonly IFileSystem _fileSystem; + private readonly IJsonSerializer _jsonSerializer; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The log manager. - public HttpResultFactory(ILogManager logManager, IFileSystem fileSystem) + /// The file system. + /// The json serializer. + public HttpResultFactory(ILogManager logManager, IFileSystem fileSystem, IJsonSerializer jsonSerializer) { _fileSystem = fileSystem; + _jsonSerializer = jsonSerializer; _logger = logManager.GetLogger("HttpResultFactory"); } @@ -151,12 +154,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// The factory fn. /// The response headers. /// System.Object. - /// - /// cacheKey + /// cacheKey /// or - /// factoryFn - /// - public object GetOptimizedResultUsingCache(IRequest requestContext, Guid cacheKey, DateTime lastDateModified, TimeSpan? cacheDuration, Func factoryFn, IDictionary responseHeaders = null) + /// factoryFn + public object GetOptimizedResultUsingCache(IRequest requestContext, Guid cacheKey, DateTime? lastDateModified, TimeSpan? cacheDuration, Func factoryFn, IDictionary responseHeaders = null) where T : class { if (cacheKey == Guid.Empty) @@ -199,7 +200,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// The response headers. /// System.Object. /// cacheKey - public object GetCachedResult(IRequest requestContext, Guid cacheKey, DateTime lastDateModified, TimeSpan? cacheDuration, Func factoryFn, string contentType, IDictionary responseHeaders = null) + public object GetCachedResult(IRequest requestContext, Guid cacheKey, DateTime? lastDateModified, TimeSpan? cacheDuration, Func factoryFn, string contentType, IDictionary responseHeaders = null) where T : class { if (cacheKey == Guid.Empty) @@ -661,5 +662,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer throw error; } + + public object GetOptimizedSerializedResultUsingCache(IRequest request, T result) + where T : class + { + var json = _jsonSerializer.SerializeToString(result); + var cacheKey = json.GetMD5(); + + return GetOptimizedResultUsingCache(request, cacheKey, null, null, () => result); + } } } \ No newline at end of file -- cgit v1.2.3