2016-09-10 5 views
9

Gestern hatten wir keinen Strom zu Hause, also kein Internet. So ging ich davon aus, dass ich nicht meine Web-App-Arbeit vor Ort wäre in der Lage zu haben, da am Ende der „index.html“ Ich habe:Caching verstehen?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script> 
     window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>') 
</script> 
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/masonry/3.1.5/masonry.pkgd.min.js"></script> 
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/123941/imagesLoaded.js"></script> 
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/123941/masonry.js"></script> 

jedoch nicht der Fall war, würde es reibungslos funktionieren. Ich vermutete, dass der Browser sich daran erinnerte, wann er diese js-Dateien zuletzt heruntergeladen hatte.

Beim Laden meiner wep-app konnte die JS-Datei nicht geladen werden, da keine Internetverbindung bestand. Dieses Verhalten würde immer wieder vorkommen.

In beiden Fällen wäre es zum Download fehlschlagen:

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans+Caption:400,700"> 

aber das ist kein kritischer Fehler. Beachten Sie, dass die lokal in meiner Projektdatei war, deshalb ist es irrelevant.

Ich versuche zu verstehen, warum, irgendwelche Gedanken?

Ich verwende Version 52.0.2743.116 (64-Bit) in einem MacBook Pro El Capitan.


Mine: Der Browser verwendet, um die im Cache gespeicherten Versionen der js-Dateien, aber auch auf normalen Reload würde es versuchen, sie erneut herunterladen ..

Antwort

3

Einige externen Dateien haben keinen weit Zukunft Ablauf Datum im HTTP-Header festgelegt.

Sie werden bemerken, wenn ich eine Seite mit der Google-Schrift laden, hier ist die Antwort-Header:

Google Font API

Access-Control-Allow-Origin: * 
Cache-Control: private, max-age=86400 
Content-Encoding: gzip 
Content-Type: text/css; charset=utf-8 
Date: Sat, 10 Sep 2016 04:55:29 GMT 
Expires: Sat, 10 Sep 2016 04:55:29 GMT 
Link: <http://fonts.gstatic.com>; rel=preconnect; crossorigin 
Server: ESF 
Timing-Allow-Origin: * 
Transfer-Encoding: chunked 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 

Sie werden hier feststellen, dass Google serviert Diese Schriftart mit einem sofortigen Ablaufdatum. (Ich habe die Datei auf Sat, 10 Sep 2016 04:55:29 GMT zugegriffen und es läuft zur gleichen Zeit ab) Dies ist wahrscheinlich, warum es nie in erster Linie geladen.

Andere als das - ich bin ehrlich gesagt nicht sicher, warum die JS-Dateien für Sie nach dem Neuladen der Seite nicht verfügbar waren. Der Rest der Dateien hat Ablaufköpfe in der Zukunft, und ich habe es selbst getestet, indem ich Firefox Version 48.0.1 ohne Probleme benutzt habe. Ich habe zuerst die Seite mit Ihren Skripten geladen und dann "Offline arbeiten" gewählt. Der Browser hat weiterhin zwischengespeicherte Versionen dieser Dateien bereitgestellt, egal wie oft ich Refresh oder F5 gedrückt habe. Vielleicht ist es eine Einstellung mit Ihrem Browser, aber ich kann mir nicht sicher sein. Vielleicht hat jemand anderes mehr Informationen dazu.

+0

Nicky danke. +1. Ich verwende [tag: chrome] mit den Standardeinstellungen ... Ich werde warten, um zu sehen, welche anderen Antworten gepostet werden können. Da du die Frage interessant gefunden hast, schätze ich, dass du schon hochgestimmt hast, danke! – gsamaras

+1

@gsamaras eine interessante Frage in der Tat! – NickyTheWrench