Настройка заголовков элементов управления ASP.NET Cache - PullRequest
3 голосов
/ 09 января 2012

В моем приложении asp.net формы.Я пытаюсь предотвратить кеширование определенных страниц.для этого я установил серию заголовков элементов управления кэшем с помощью Response.AppendHeader, например:

protected override void OnLoad(Eventargs e) 
{
...
Response.ClearHeaders();
Response.AppendHeader("Cache-Control","no-cache");
....
base.OnLoad(e);
}

Проблема в том, что когда я просматриваю свой сайт и смотрю вкладку «Сеть» в консоли Firefox, чтобы просмотреть запрос / ответЗаголовки Я вижу поведение следующим образом:

  1. запрос / ответ POST для page1.aspx, который инициирует перенаправление (на page2.aspx) ответ здесь содержит правильные заголовки.

  2. запрос / ответ GET для связанного ответа page2.aspx имеет заголовок управления кэшем, просто имеет значение 'pre-check = 0'

Этот второй запрос, по-видимому, позволяет осуществлять кэширование для страницы .. note: page1.aspx и page2.aspx оба имеют логику OnLoad, которую я описал выше.Также, если я предприму какое-либо действие на page2.aspx, ответ POST снова будет иметь правильные заголовки.

Что мне здесь не хватает?Я ожидал, что с логикой в ​​OnLoad должно означать, что я всегда получаю заголовки в ответе и, следовательно, «всегда» получаю текущую версию страницы?

Я вижу, что Firefox загружает кэшированную версию страницы.

Я подумываю создать случайный идентификатор в URL запроса, чтобы вызвать проблему, но это кажется немного тяжелым.handed.

----- update ----- Похоже, это может быть связано с наличием кода кэширования в OnLoad.Я добавил эти заголовки в Page_Load () страницы, и он работает нормально?любые мысли.

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Попробуйте поменять Response.AppendHeader("Cache-Control","no-cache"); на

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

и убедитесь, что у вас нет директивы @ OutputCache и вы не явно препятствует управлению кэшем ,См. эту страницу MSDN по SetCacheability и SetNoStore .

0 голосов
/ 08 сентября 2013

Вместо этого вы можете попробовать эту директиву страницы:

<%@ OutputCache Location="None" VaryByParam="None" %>

См. Также: Как: декларативно установить кэшируемость страницы ASP.NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...