Closed candrews closed 12 years ago
Thanks a bunch for all of this. I'm transitioning roles at work and have been pretty much been working round the clock to get all my current responsibilities tied up so I will probably not be able to really dig into these issues until the weekend. Thanks!!
From: "Craig" <reply+i-4951405-74bb56014d47d7610892a24303a8ca299e240795-655165@reply.githu b.com>
Sent: Thursday, June 07, 2012 7:46 AM
To: "Matt Wrock" matt@mattwrock.com
Subject: [RequestReduce] When the 'rrfilter' query string parameter is specified, ASP.NET output caching should be disabled (#195)
When the 'rrfilter='something query string parameter is used, such as to disable RR (rrfilter=disabled), ASP.NET output caching should be disabled using:
Response.Cache.SetCacheability(HttpCacheability.Private);
Reply to this email directly or view it on GitHub:
Here's a replacement body for ResponseFilter.InstallerFilter that resolves this issue:
public static void InstallFilter(HttpContextBase context)
{
var request = context.Request;
var config = RRContainer.Current.GetInstance<IRRConfiguration>();
if (context.Items.Contains(ContextKey))
{
return;
}else{
if (request.QueryString["RRFilter"] != null && request.QueryString["RRFilter"].Equals("disabled", StringComparison.OrdinalIgnoreCase))
{
context.Response.Cache.SetCacheability(HttpCacheability.Private);
return;
}
else if ((config.CssProcessingDisabled && config.JavaScriptProcessingDisabled) ||
context.Response.IsRequestBeingRedirected ||
RRContainer.Current.GetAllInstances<IFilter>().Where(x => x is PageFilter).FirstOrDefault(y => y.IgnoreTarget(new PageFilterContext(context.Request))) != null)
{
return;
}
}
if (context.Items.Contains(ContextKey) ||
(request.QueryString["RRFilter"] != null && request.QueryString["RRFilter"].Equals("disabled", StringComparison.OrdinalIgnoreCase)) ||
(config.CssProcessingDisabled && config.JavaScriptProcessingDisabled) ||
context.Response.StatusCode == 302 ||
context.Response.StatusCode == 301 ||
RRContainer.Current.GetAllInstances<IFilter>().Where(x => x is PageFilter).FirstOrDefault(y => y.IgnoreTarget(new PageFilterContext(context.Request))) != null)
return;
var hostingEnvironment = RRContainer.Current.GetInstance<IHostingEnvironmentWrapper>();
if (string.IsNullOrEmpty(config.SpritePhysicalPath))
config.SpritePhysicalPath = hostingEnvironment.MapPath(config.SpriteVirtualPath);
var oldFilter = context.Response.Filter; //suppresses a asp.net3.5 bugg
context.Response.Filter = RRContainer.Current.GetInstance<AbstractFilter>();
context.Items.Add(ContextKey, new object());
RRTracer.Trace("Attaching Filter to {0}", request.RawUrl);
}
When the 'rrfilter='something query string parameter is used, such as to disable RR (rrfilter=disabled), ASP.NET output caching should be disabled using: