Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как лучше всего справиться с кэшем и кнопкой возврата браузера?
Как лучше всего обращаться с пользователем, возвращающимся на страницу, на которой были кэшированы элементы в приложении asp.net? Есть ли хороший способ захватить кнопку Назад (событие?) и обрабатывать кэш таким образом?
Вы можете попробовать использовать свойство HttpResponse.Cache, если это поможет:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;
if (Response.Cache.VaryByParams["Category"])
{
//...
}
Или можно было бы вообще заблокировать кэширование страницы с помощью HttpResponse.CacheControl , но оно было устаревшим в пользу свойства кэша выше:
Response.CacheControl = "No-Cache";
Edit: OR вы могли бы действительно сойти с ума и сделать все это вручную:
Response.ClearHeaders();
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=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
Насколько я знаю (или, по крайней мере, читал), лучше всего стараться не работать в ответ на пользовательские события, а скорее думать "in the page"..
Создайте свое приложение так, чтобы ему было все равно, нажата ли кнопка Назад.. Он просто справится с этим.. Это может означать небольшую дополнительную работу с точки зрения разработки, но в целом сделает приложение намного более надежным..
I.e если Шаг 3 выполняет некоторые операции с данными, то пользователь нажимает кнопку Назад (к Шагу 2) и снова нажимает кнопку Далее, после чего приложение проверяет, были ли внесены изменения.. Или в идеале, он не вносит никаких жестких изменений, пока пользователь не нажмет "OK" в конце.. Таким образом, все изменения сохраняются, и вы можете повторно заполнить форму на основе ранее введенных значений при загрузке, каждый раз..
Я надеюсь, что это имеет смысл :)
RFC 2616 §13.13 говорит, что история и Кэш-это разные вещи . Там не должно быть абсолютно никакого способа для кэша, чтобы повлиять на кнопку Назад.
Если какая-либо комбинация заголовков HTTP влияет на кнопку Назад, это ошибка в браузере ...за одним исключением.
В HTTP s браузеры интерпретируют Cache-control: must-revalidate как запрос на обновление страниц при использовании кнопки Назад (Mozilla называет это "глупым банковским режимом"). Это не поддерживается в plain HTTP.
Лучший способ справиться с этим-вероятно, поместить директиву no-cache на ваши страницы ASP.NET (или главную страницу, если вы ее используете). Я не думаю, что есть способ справиться с этим непосредственно в вашем коде ASP.NET (так как решение о кэшировании происходит на клиенте).
Что касается MVC, не знаю, как вы это сделаете (предполагая, что он отличается от веб-форм на основе ASP.NET); я его не использовал.
Следующий код работал для меня в IE9+, FF21 и последней версии Chrome:
Response.Cache.SetCacheability(HttpCacheability.NoCache | HttpCacheability.Private);
Response.Cache.AppendCacheExtension("must-revalidate");
Response.Cache.AppendCacheExtension("max-age=0");
Response.Cache.SetNoStore();
Вы можете поместить его в Page_Load() обработчик событий в MasterPage, так что каждая страница в вашем приложении требует обратного перехода на сервер при нажатии кнопки Назад.