Запретить кэширование IE
Я разрабатываю веб-приложение Java EE, используя распорки. Проблема заключается в кэшировании Internet Explorer. Если пользователь выходит из системы, он может получить доступ к некоторым страницам, потому что они кэшируются и запрос не выполняется. Если я нажму "обновить", он будет работать нормально. Также, если пользователь снова перейдет на страницу входа, он не перенаправит его, потому что эта страница также кэшируется.
на ум приходят два решения:
- запись перехватчика (фильтр сервлетов) для добавления в заголовок ответа no-cache так далее.
- или поставить
<meta>
теги на каждой странице.
что я должен делать?
5 ответов
скорее установите следующие заголовки на HttpServletResponse
страницы(ов) в вопросе, так что вам не нужно копировать его по всем страницам вручную:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
Это эквивалентно установке следующих мета-заголовков на странице(страницах) вручную:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
см. Также ответ. Не забудьте очистить кэш браузера перед тестированием;)
Я нашел следующее, Чтобы хорошо работать:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform, pre-check=0, post-check=0, private");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
из тегов по этому вопросу похоже, что вы используете распорки. Распорки 1.x позволяет сделать это через конфигурацию в struts-config.xml путем установки nocache="true"
на controller
элемент:
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" nocache="true" />
Марк Ноттингем!--9-->кэширование учебник это лучший ресурс, который я видел в интернете о HTTP и кэшировании, если вы хотите понять больше.
это, как говорится, в зависимости от проблема, которую вы видите, может быть проблемой истории браузера. См.здесь для получения дополнительной информации об этом.
похоже, IE
http://support.microsoft.com/kb/222064/
немного лучшее объяснение вот!--1-->
http://www.htmlgoodies.com/beyond/reference/article.php/3472881/So-You-Dont-Want-To-Cache-Huh.htm
от тестирования вам также нужен тег Expires: -1 meta, чтобы он работал. Рекомендуется использовать expires: -1, а не 0.
добавить тег type= "button"в кнопку фактического действия.
значение атрибута type по умолчанию зависит от текущего режима совместимости документов. Значение по умолчанию-отправить. В других режимах совместимости значение по умолчанию-button. При отправке элемента BUTTON в форме значение зависит от текущего режима совместимости документа. Windows Internet Explorer 8 и более поздних версий. Значение атрибута type по умолчанию зависит от текущего режима совместимости документов. В Режим стандартов IE8, значение по умолчанию-submit. В других режимах совместимости и более ранних версиях Windows Internet Explorer значением по умолчанию является button. Internet Explorer 8 и более поздних версий. При отправке элемента BUTTON в форме значение зависит от текущего режима совместимости документа. В режиме IE8 передается атрибут value. В других режимах документов и более ранних версиях Internet Explorer значение innerText представлен.
http://msdn.microsoft.com/en-us/library/ie/ms535211 (v=против 85).aspx