Search code examples
asp.net-mvcasp.net-mvc-3cachingoutputcache

ASP MVC 3 OutputCache avoid cacheing current request


I started using OutputCache for my website. The problem that I encounter is that when a user update an item I need to reset the cache for that item.

I did that using:

var urlToRemove = Url.Action("Details", "Dress", new {id = model.Id});
Response.RemoveOutputCacheItem(urlToRemove);

In Edit action I also set to TempData the update success message and I display it on the next request. The problem is that the message remains in the cached response.

Do you know how can I avoid caching in an action. Something like:

[OutputCache(Duration = 3600, VaryByParam = "id")]
public ViewResult Details(int id)
{  
  if(NotificationHelper.HasNotifications)
    Response.DoNotCache();
    .....

I cannot use the same trick ... because the page is added to the cache after its rendered. So I cannot exclude an action from cache in its body.


Solution

  • What you are describing is sometimes referred as "Donut Hole Caching" because you want to cache everything except some bit of dynamic content in the middle.

    Here is are a couple resources you might want to look at: