Skip to content

Instantly share code, notes, and snippets.

@fluxdigital
Last active November 9, 2018 18:48
Show Gist options
  • Save fluxdigital/a13892d39b7fbbaba624c57a459bccb1 to your computer and use it in GitHub Desktop.
Save fluxdigital/a13892d39b7fbbaba624c57a459bccb1 to your computer and use it in GitHub Desktop.
Fix for MvcBrowserCaching not working on 8.1 and 8.2
public class MvcBrowserCaching : GetPageRenderingProcessor
{
public override void Process(GetPageRenderingArgs args)
{
Assert.ArgumentNotNull((object)args, "args");
Profiler.StartOperation("Update browser caching headers.");
HttpContext currentContext = HttpContext.Current;
Item currentItem = PageContext.CurrentOrNull.Item;
if (currentContext == null)
return;
MvcBrowserCaching.SetCacheHeaders(currentContext);
if (currentItem != null)
MvcBrowserCaching.SetUpdateHeaders(currentItem, currentContext);
Profiler.EndOperation();
}
private static void SetCacheHeaders(HttpContext currentContext)
{
if (Context.Site == null && !Settings.DisableBrowserCaching || Context.Site != null && !Context.Site.DisableBrowserCaching)
return;
Tracer.Info((object)"Adding Http headers to disable caching.");
currentContext.Response.Cache.SetNoStore();
currentContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
private static void SetUpdateHeaders(Item item, HttpContext currentContext)
{
DateTime date = item.Statistics.Updated;
if (date > DateTime.UtcNow)
date = DateTime.UtcNow;
Tracer.Info((object)"Adding Http header to indicate last modification.", (object)("Date: " + (object)date + " (UTC)."));
currentContext.Response.Cache.SetLastModified(date);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment