Принудительная перезагрузка страницы в Chrome с использованием Javascript [без кеша]
Мне нужно перезагрузить страницу с помощью JavaScript и убедиться, что она не извлекается из кэша браузера, а перезагружает страницу с сервера. [Как элементы страницы будут меняться в промежутке]
В IE и FF я обнаружил, что следующий код работает нормально;
window.location.reload(true);
Однако это не работает на Chrome или Safari.
Я попробовал следующее, но тоже безрезультатно;
window.location.replace(location.href);
document.location.reload(true);
document.location.replace(location.href);
Есть ли решение этой проблемы?
Findings
Изучив это, я обнаружил, что эта проблема связана с обработкой протокола HTTP;
Chrome sends a request withPragma: no-cache
HTTP field
Server responds with Last-Modified: DATE1
field
JS uses location.reload(true)
to force a reload from server not cache
Chrome sends a request with If-Modified-Since: DATE1
field
Server responds with HTTP Status 304 Not Modified
Серверное приложение виновно в том, что не заметил изменения состояния в содержимом динамической страницы и, таким образом, не возвращает200
.
However, Chrome/WebKit is the only browser that sends a If-Modified-Since
поле, когда JSlocation.reload(true)
называется.
Я подумала, что опубликую свои выводы на случай, если кто-то еще столкнется с той же проблемой.