Beim Abrufen des folgenden HTML in einem Browser wird ein Cache-Steuerelement-Header vom Browser für die XHTTP-Anforderungen im Hauptbereich festgelegt, aber nicht für die Anforderung aus dem Timeout-Rückruf. Dies führt dazu, dass die zweite Ressource immer aus dem Cache geladen wird, sofern kein Cache vorhanden ist. Warum beeinflusst die Anfrage in einem Callback die Cache-Header?Wie wirkt sich das Herstellen einer XMLHttpRequest-Nachricht aus einem Rückruf auf das Caching aus?
<!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>
(Ich habe dies die Maschinen auf allen getesteten und Browsern ich bei der Hand habe und die Ergebnisse sind recht konstant. Die einzige Ausnahme ist, dass Firefox einen Cache-control-Header für die Callback-Ressource zu setzen scheint, wenn die Timeout ist auf 0
eingestellt, was andere Browser immer noch nicht tun).
Ich frage nach den 'Cache-Control'-Headern, die in der Anfrage des Browsers eingestellt sind, nicht die Antwort des Servers. Wenn Sie 'console.log (req.path, req.headers [" cache-control "]);' zu Ihrem '/ resource.' '- Handler hinzufügen, den Browser-Cache löschen und neu laden, sollten Sie sehen, dass die Anforderung für' resource2.html hat keinen Cache-Control-Header. –
Entschuldigung, wenn die Frage nicht eindeutig war. Ich habe den Text zur Klärung bearbeitet. –
@IanMackinnon [aktualisiert] welchen Browser benutzen Sie? Hast du es im Inkognito-Modus versucht? – malix