How to invalidate cache data [OutputCache] from a Controller?

asp.net-mvc, asp.net-mvc-3, c#, caching

Solution

You could use the `RemoveOutputCacheItem` method.

Here's an example of how you could use it:

public class HomeController : Controller
{
    [OutputCache(Duration = 60, Location = OutputCacheLocation.Server)]
    public ActionResult Index()
    {
        return Content(DateTime.Now.ToLongTimeString());
    }

    public ActionResult InvalidateCacheForIndexAction()
    {
        string path = Url.Action("index");
        Response.RemoveOutputCacheItem(path);
        return Content("cache invalidated, you could now go back to the index action");
    }
}

The Index action response is cached on the server for 1 minute. If you hit the `InvalidateCacheForIndexAction` action it will expire the cache for the Index action. Currently there's no way to invalidate the entire cache, you should do it per cached action (not controller) because the `RemoveOutputCacheItem` method expects the url of the server side script that it cached.

Problem

Using ASP.Net MVC 3 I have a Controller which output is being cached using attributes `[OutputCache]` ``` [OutputCache] public controllerA(){} ``` I would like to know if it is possible to invalidate the Cache Data (SERVER CACHE) for a Specific Controller or generally all the Cache data by calling another controller ``` public controllerB(){} // Calling this invalidates the cache ```

Original source

Related problems