Отключить кеш страницы, чтобы принудительно загружать страницы с помощью кнопки "Назад"
У меня есть сайт asp.net, который использует панели обновлений на странице, которые я не могу загрузить с сервера. У меня есть это для отключения кэша страниц на главной странице.
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1))
Response.Cache.SetValidUntilExpires(False)
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetNoStore()
Когда я нажимаю кнопку "Назад назад", чтобы вернуться на страницу, она говорит, что страница истекло. Другие страницы на моем веб-сайте работают и вызывают загрузку страницы, единственное решение, которое я нашел, но не могу использовать, - это вскрыть всю страницу на панели обновления, но я не могу этого сделать, потому что у меня есть средство просмотра отчетов на странице, не работает с ajax. Если кто-то может помочь, я бы очень признателен.
Ответы
Ответ 1
Это не проблема с кешем браузера; это обратная передача. Вы должны реализовать шаблон Post/Redirect/Get, чтобы избежать сообщения "вы хотите отправить снова?/Страница с истекшим сроком действия".
http://en.wikipedia.org/wiki/Post/Redirect/Get
Классический пример для этой вещи - это когда веб-страница имеет кнопку сохранения, которая вставляет что-то в базу данных. Кнопка "Сохранить" нажата → происходит обратная передача → код вставляет строку в таблицу → пользователь обновляет страницу (F5) → обратная передача происходит снова → код снова вставляет ту же строку.
Чтобы избежать двойной вставки в предыдущем примере, вам нужно перенаправить, когда нажата кнопка "Сохранить", и только тогда выполните вставку.
Ответ 2
Просто добавьте это в свой файл просмотра в заголовок:
<head>
<script language="JavaScript">
<!--
javascript:window.history.forward(1);
//-->
</script>
</head>
В теге body body добавьте это:
<body onUnload="OperaReload()">
<input type="hidden" id="refreshed" value="no">
Ответ 3
Чтобы перезагрузить страницу с помощью JavaScript, используйте следующее:
window.location.replace(window.location.pathname);