/ / Can not Clear C # MVC Cache: c #, caching, model-view-controller, browser-cache

Can not Clear C # MVC Cache - c #, caching, model-view-controller, browser-cache

Io uso queste impostazioni nel mio web.file di configurazione e il browser dei miei clienti ha memorizzato nella cache i risultati del mio metodo MVC Controller? Come e perché? La mia configurazione non ha come target le visualizzazioni cshtml o Razor. E cosa posso fare ora per cancellare la cache del browser dei miei clienti?

<system.webServer>
<caching>
<profiles>
<add extension=".png" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
<add extension=".gif" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
<add extension=".jpg" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
<add extension=".js" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
<add extension=".css" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client"/>
</profiles>
</caching>
<httpProtocol allowKeepAlive="true">
<customHeaders>
<add name="Cache-Control" value="public, max-age=691200"/>
</customHeaders>
</httpProtocol>

risposte:

0 per risposta № 1

Puoi farlo in modo programmatico, prova questo: metti questo sul tuo modello:

public class NoCache : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();

base.OnResultExecuting(filterContext);
}
}
and on your specific controller: e.g:

[NoCache]
[Authorize]
public ActionResult Home()
{
////////...
}

Codice preso da: Come cancellare la cache nel controller specificato in asp mvc?


-1 per risposta № 2

Una soluzione sarebbe impostare il numero di versione dopo i file .css, .js, .gif nel progetto. So che questo è un enorme cambiamento nel sistema. Ecco come puoi svuotare la cache sui computer client

Qualcosa come questo

script.css?v=1.0 // This is the URL for release 1.0

Spero che sia d'aiuto. In bocca al lupo.