При работе с ASP.NET часто требуется запретить кеширование страниц браузером. Под страницами тут можно понимать любой ответ с сервера. Будь то HTML, AJAX XHR, картинка или любой другой файл.
Задача сводится к добавлению в ответ определенных заголовков, позволяющих управлять кешем.
Page.Load
Самый простой пример, это добавить следующий код в Page.Load или любое другое событие Page.
void Page_Load(Object sender, EventArgs e)
{
Response.AppendHeader(«Cache-Control», «no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0»); // HTTP 1.1
Response.AppendHeader(«Pragma», «no-cache»); // HTTP 1.1
Response.AppendHeader(«Keep-Alive», «timeout=3, max=993»); // HTTP 1.1
Response.AppendHeader(«Expires», «Mon, 26 Jul 1997 05:00:00 GMT»); // HTTP 1.1
}
В этом случае запрос будет всегда послан на сервер для этой страницы.
Второй случай подходит для тех классов, где нет явного доступа к текущему классу HttpResponse. В этом случае можно использовать свойство HttpContext.Current:
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now;
HttpContext.Current.Response.AddHeader(«pragma», «no-cache»);
HttpContext.Current.Response.AddHeader(«cache-control», «private»);
HttpContext.Current.Response.CacheControl = «no-cache»;
Последний подход широко используется в модулях (HttpModule) и хендлерах (HttpHandler) или как в моем случае — в контроллере (Controller) ASP.NET MVC.
Метки:ASP.NET, C#, разработка
Похожие статьи
- 30 декабря 2008 -- Создаем ASHX хендлер в ASP.NET (1)
- 8 декабря 2008 -- Перезагрузка страницы из кода. (0)
- 22 августа 2008 -- Собственная страница для обработки ошибок на ASP.NET (0)
- 19 июня 2008 -- IIS 6 и ASP.NET MVC. (5)
- 4 августа 2008 -- ASP.NET trace как один из инструментов отладки. (0)
16 декабря, 2008 at 17:03
Вот такой вот простой способ:
11 ноября, 2009 at 13:08
< % // prevent caching (asp classic jscript) Response.CacheControl = "no-cache"; Response.AddHeader("Pragma", "no-cache"); Response.Expires = -1; %>