При получении в браузере следующего HTML-заголовка Cache-control устанавливается браузером для запросов XHTTP, сделанных в основной области, но не для запроса, сделанного из обратного вызова таймаута. Это приводит к тому, что второй ресурс всегда загружается из кеша, если кеш отсутствует. Почему включение запроса в обратный вызов влияет на заголовки кеша, подобные этому?Как сделать XMLHttpRequest от обратного вызова влиять на кеширование?
<!DOCTYPE HTML>
<html>
<body>
<script type="text/javascript">
var get = function (url) {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.send();
}
get("resource1.html"); // Cache-control set
setTimeout(function() {
get("resource2.html"); // Cache-control not set
}, 10);
get("resource3.html"); // Cache-control set
</script>
</body>
</html>
(я проверил это на всех машинах и браузерах у меня есть под рукой, и результаты вполне согласуются. Единственным исключением является то, что Firefox, похоже, установить заголовок Cache-Control для ресурса обратного вызова, если таймаут установлен на 0
, которого другие браузеры все равно не делают).
Я спрашиваю о том, что заголовки 'cache-control' устанавливаются в запросе браузера, а не в ответе сервера. Если вы добавите 'console.log (req.path, req.headers [" cache-control "]);' в обработчик '/ resource. /', Очистите кеш браузера и перезагрузите, вы увидите, что запрос ' resource2.html' не имеет заголовка 'cache-control'. –
Извинения, если вопрос был неоднозначным. Я отредактировал текст, чтобы уточнить. –
@IanMackinnon [обновлено] какой браузер вы используете? Вы пробовали в режиме «инкогнито»? – malix