Мы получаем странную проблему, в которой мы не уверены, что точно вызывает ее. Позвольте мне разработать проблему. Предположим, у нас есть две различных страницы HTML a.html и b.html. И немного сценария, записанного в index.html:
<html>
<head>
<script>
function reloadFrame(iframe, src) {
iframe.src = src;
}
</script>
</head>
<body>
<form>
<iframe id="myFrame"></iframe>
<input type="button" value="Load a.html" onclick="reloadFrame(document.getElementById('myFrame'), 'a.html')">
<input type="button" value="Load b.html" onclick="reloadFrame(document.getElementById('myFrame'), 'b.html')">
</form>
</body>
</html>
Серверный компонент непрерывно обновляет оба файла a.html и b.html. Проблемой является содержание обоих файлов, успешно обновляют на стороне сервера. Если мы открываемся, мы видим обновленные изменения, но клиент, получающий более старое содержание, которое не показывает обновленные изменения.
Какая-либо идея?
Добавьте это в a.html и b.html
<head>
<meta http-Equiv="Cache-Control" Content="no-cache" />
<meta http-Equiv="Pragma" Content="no-cache" />
<meta http-Equiv="Expires" Content="0" />
</head>
Чтобы принудительно не проводить проверки кеша
Если вы можете добавить серверные инструкции к этим HTML-файлам, вы можете отправить соответствующие заголовки для предотвращения кеширования:
Создание Конечно, веб-страница не кешируется во всех браузерах (я думаю, что консенсус состоит в том, что лучше всего подходит второй ответ, а не принятый)
Ответ Симоне уже касается мета-тегов.
Быстрый дешевый трюк - добавить случайное число в качестве параметра GET:
page_1.html?time=102398405820
если оно изменяется при каждом запросе (например, с использованием текущего времени), перезагрузка также будет каждый раз принудительно.
В качестве одного из возможных решений этой проблемы передайте «параметр кеша» вашим вызовам в a.html и b.html. Например,
HTML
<input type="button" value="Load a.html" onclick="cacheSafeReload('a.html');">
Javascript
function cacheSafeReload(urlBase) {
var cacheParamValue = (new Date()).getTime();
var url = urlBase + "?cache=" + cacheParamValue;
reloadFrame(document.getElementById('myFrame'), url);
}