Zalecam, aby połączenia te były ograniczone do żądań innych niż GET, aby uniknąć utraty korzyści z pamięci podręcznej w GET. Poniższe zapewnia, że nawet agresywne przeglądarki buforujące, takie jak iOS 6 Safari, nie będą buforować niczego, co nie jest żądaniem GET.
Używam klasy bazowej kontrolera, z której wszystkie moje kontrolery dziedziczą z wielu powodów, a to dobrze sprawdziło się w tym, że moje przesłonięcie inicjowania może obsłużyć warunkowo moje nagłówki buforowania.
public class SmartController : Controller
{
...
public HttpContextBase Context { get; set; }
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
Context = requestContext.HttpContext;
if (Context.Request.RequestType != "GET")
{
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
base.Initialize(requestContext);
...
}
...
}
Mam edytowane moją odpowiedź do używania 'Response.Cache.SetCacheability()' metoda zamiast ustawiać nagłówki ręcznie. Testowane w Fiddler i działa zgodnie z oczekiwaniami. – Marko