From d6a0e8dbc5be4e960fb7504c69af16cbb9130a57 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Tue, 31 Jul 2012 21:48:32 -0400 Subject: [PATCH] Improved http response caching --- MediaBrowser.Common/Net/Handlers/BaseHandler.cs | 2 +- MediaBrowser.Common/Net/RequestContext.cs | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs index 6f6779ad3..0bf7406ec 100644 --- a/MediaBrowser.Common/Net/Handlers/BaseHandler.cs +++ b/MediaBrowser.Common/Net/Handlers/BaseHandler.cs @@ -86,7 +86,7 @@ namespace MediaBrowser.Common.Net.Handlers WriteStream = s => { WriteReponse(s); - s.Close(); + s.Dispose(); }; } diff --git a/MediaBrowser.Common/Net/RequestContext.cs b/MediaBrowser.Common/Net/RequestContext.cs index 5c7a6b99f..1d1b8d02f 100644 --- a/MediaBrowser.Common/Net/RequestContext.cs +++ b/MediaBrowser.Common/Net/RequestContext.cs @@ -29,7 +29,7 @@ namespace MediaBrowser.Common.Net Response.AddHeader("Access-Control-Allow-Origin", "*"); Response.KeepAlive = true; - + foreach (var header in handler.Headers) { Response.AddHeader(header.Key, header.Value); @@ -54,11 +54,12 @@ namespace MediaBrowser.Common.Net } } - Response.SendChunked = true; Response.StatusCode = statusCode; - if (statusCode != 304) + if (statusCode == 200) { + Response.SendChunked = true; + if (handler.GzipResponse) { Response.AddHeader("Content-Encoding", "gzip"); @@ -72,8 +73,8 @@ namespace MediaBrowser.Common.Net } else { - Response.OutputStream.Flush(); - Response.OutputStream.Close(); + Response.SendChunked = false; + Response.OutputStream.Dispose(); } } @@ -81,7 +82,7 @@ namespace MediaBrowser.Common.Net { DateTime lastModified = dateModified ?? DateTime.Now; - response.Headers[HttpResponseHeader.CacheControl] = "Public"; + response.Headers[HttpResponseHeader.CacheControl] = "public, max-age=" + Convert.ToInt32(duration.TotalSeconds); response.Headers[HttpResponseHeader.Expires] = DateTime.Now.Add(duration).ToString("r"); response.Headers[HttpResponseHeader.LastModified] = lastModified.ToString("r"); }