Se l'azione del controller ha l'attributo OutputCache specificato su un'azione, esiste un modo per svuotare la cache di output senza dover riavviare IIS?Come cancellare in modo programmato outputcache per il metodo di azione del controllore
[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
var someModel = SomeModel.Find(param1, param2);
//set up ViewData
...
return RenderToString("ViewName", someModel);
}
Sto cercando di utilizzare HttpResponse.RemoveOutputCacheItem(string path)
per cancellarlo, ma sto avendo difficoltà a capire ciò che il percorso dovrebbe essere quello di mappare al metodo di azione. Ho intenzione di riprovare con la pagina di aspx resa da ViewName.
Probabilmente inserirò manualmente l'output di RenderToString
nello HttpContext.Cache
invece se non riesco a capirlo.
Aggiornamento
Si prega di notare che l'OutputCache è VaryByParam, e testare un percorso hardcoded "/ regolatore/azione" in realtà non cancellare l'OutputCache, così sembra che esso deve corrispondere "/ regolatore/azione/param1/param2" .
Ciò significa che probabilmente dovrete tornare al livello di caching e object cache manualmente l'uscita per RenderToString()
:(
Prova ad aggiungere 'location =" Server "' all'attributo OutputCache: non è possibile cancellare la cache del client dal server –