Мне нужно перезагрузить страницу с помощью JavaScript и убедиться, что она не извлекается из кеша браузера, а вместо этого перезагружает страницу с сервера. [Поскольку элементы страницы будут изменены за это время]
В IE и FF я обнаружил, что следующий код работает нормально;
window.location.reload(true);
Однако это не работает в Chrome и Safari.
Я пробовал следующее, но тоже безрезультатно;
window.location.replace(location.href);
document.location.reload(true);
document.location.replace(location.href);
Есть ли решение этой проблемы?
Выводы
Изучив это, я обнаружил, что проблема связана с обработкой протокола HTTP;
Pragma: no-cache
поле HTTPLast-Modified: DATE1
location.reload (true)
для принудительной перезагрузки с сервера без кэшированияIf-Modified-Since: DATE1
Состояние HTTP 304 Not Modified
Ошибка серверного приложения в том, что оно не заметило изменения состояния содержимого динамической страницы и, таким образом, не вернуло 200
.
Однако Chrome/WebKit — единственный браузер, который отправляет поле If-Modified-Since
при вызове JS location.reload(true)
.
Я решил опубликовать свои выводы здесь на случай, если кто-то еще столкнется с той же проблемой.