Wyłącz pamięć podręczną przeglądarki dla całego ASP.NET strona www
Szukam metody wyłączenia pamięci podręcznej przeglądarki dla całego ASP.NET strona MVC
Znalazłem następującą metodę:
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
A także Meta tag (dla mnie to nie zadziała, ponieważ niektóre akcje MVC wysyłają częściowy HTML / JSON przez Ajax, bez głowicy, meta tag).
<meta http-equiv="PRAGMA" content="NO-CACHE">
Ale szukam prostej metody, aby wyłączyć pamięć podręczną przeglądarki dla całej witryny.
8 answers
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
Wszystkie żądania są kierowane domyślnie.aspx po pierwsze-więc zakładając, że możesz po prostu wpisać kod z tyłu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 05:15:40
Utwórz klasę, która dziedziczy z IActionFilter.
public class NoCacheAttribute : 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);
}
}
Następnie umieść atrybuty w razie potrzeby...
[NoCache]
[HandleError]
public class AccountController : Controller
{
[NoCache]
[Authorize]
public ActionResult ChangePassword()
{
return View();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-10 16:37:57
Zamiast kręcić własne, po prostu użyj tego, co jest dla Ciebie przewidziane.
Jak wspomniano wcześniej, nie wyłączaj buforowania dla wszystkiego. Na przykład Skrypty jQuery używane w ASP.NET MVC powinien być buforowany. Właściwie najlepiej byłoby użyć CDN dla tych i tak, ale chodzi mi o to, że niektóre treści powinny być buforowane.
To, co uważam za najlepsze tutaj, zamiast posypywać [OutputCache] wszędzie jest użycie klasy:
[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class NoCacheController : Controller
{
}
Wszystkie Twoje Kontrolery ty chcesz wyłączyć buforowanie dla NASTĘPNIE dziedziczyć z tego kontrolera.
Jeśli chcesz nadpisać domyślne wartości w klasie NoCacheController, po prostu określ ustawienia pamięci podręcznej w metodzie action, a ustawienia w metodzie Action będą miały pierwszeństwo.
[HttpGet]
[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")]
public ViewResult Index()
{
...
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 18:47:07
Możesz wyłączyć buforowanie przeglądarki dla wszystkich stron renderowanych przez kontrolery (np. strony HTML), ale zachowaj buforowanie dla zasobów, takich jak skrypty , arkusze stylów i obrazy. Jeśli używasz wiązania i minifikacji MVC4+, będziesz chciał zachować domyślny czas trwania bufora dla skryptów i arkuszy stylów(bardzo długi czas trwania, ponieważ bufor zostaje unieważniony na podstawie zmiany na unikalny adres URL, a nie na podstawie czasu).
W MVC4+, aby wyłączyć buforowanie przeglądarki przez wszystkie kontrolery, ale zachowaj je dla wszystkiego, co nie jest obsługiwane przez kontroler, dodaj to do FilterConfig.RegisterGlobalFilters
:
filters.Add(new DisableCache());
Zdefiniuj DisableCache
w następujący sposób:
class DisableCache : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 14:56:41
Wiem, że ta odpowiedź nie jest w 100% związana z pytaniem, ale może komuś pomóc.
Jeśli chcesz wyłączyć pamięć podręczną przeglądarki dla całego ASP.NET MVC Website, ale chcesz to zrobić tylko tymczasowo, to lepiej wyłączyć pamięć podręczną w przeglądarce.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 18:49:46
Zaimplementowałem wszystkie poprzednie odpowiedzi i nadal miałem jeden widok, który nie działał poprawnie.
Okazało się, że nazwa widoku, z którym miałem problem, nosi nazwę 'Recent'. Najwyraźniej to mylić przeglądarkę Internet Explorer.
Po zmianie nazwy widoku (w kontrolerze) na inną (wybrałem 'Recent5'), powyższe rozwiązania zaczęły działać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 18:48:52
Możesz wypróbować poniższy kod w trybie globalnym.plik asax.
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-08 09:19:29
UI
<%@ OutPutCache Location="None"%>
<%
Response.Buffer = true;
Response.Expires = -1;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.CacheControl = "no-cache";
%>
Tło
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Expires = -1;
Response.Cache.SetNoStore();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 18:50:16