2009-02-11 12 views
13

Wie kann ich nach einer Javascript-Datei im Cache des Benutzers suchen? Wenn er die Seite aktualisiert oder die Seite nach einiger Zeit besucht hat. Ich muss diese js-Datei nicht noch einmal herunterladen. Werden die js-Dateien nach dem Schließen einer Site bereinigt?Überprüfen Sie den Cache des Browsers nach einer js-Datei.

+0

Diese Frage ist bis zur Unbrauchbarkeit tief verwurzelt, und ich habe keine Ahnung, warum es Upvotes bekam. Zuerst sagen Sie, ohne zu erklären warum, dass Sie überprüfen möchten, ob der Browser eine Datei zwischengespeichert hat (was möglich ist, aber nur über Timing-Angriffe; es gibt keine API dafür). Als nächstes sagen Sie, dass Sie dies wissen wollen, um ein erneutes Herunterladen der Datei zu vermeiden, aber der Browser * handhabt diese Logik für Sie *, wenn Sie ihm die richtigen Header geben, so dass diese Motivation keinen Sinn ergibt. Schließlich stellen Sie eine andere, nicht zusammenhängende und unklare Frage darüber, ob js-Dateien "aufgeräumt" werden, nachdem eine Site "geschlossen" wurde. Hä? –

+0

@MarkAmery können Sie bitte diese "Timing Attack" Check Erklärung verlinken? – setec

+1

@setec Hier ist eine wissenschaftliche Arbeit von vor 15 Jahren: http://sip.cs.princeton.edu/pub/webtiming.pdf. Es wurde seitdem nicht repariert, obwohl es ein Privacy-Loch ist. Die tl; dr-Version ist: Machen Sie einen '' Tag mit' onload'- und 'onerror'-Attributen, die auf die URL verweisen, an der Sie interessiert sind, und verwenden Sie JavaScript, um zu bestimmen, wie lange es dauert, bis einer der Handler aufgerufen wird. Wenn es einige Millisekunden dauert, hat der Benutzer die Ziel-URL zwischengespeichert. –

Antwort

11

Ob eine Javascript-Datei zwischengespeichert wird, hängt davon ab, wie Ihr Webserver eingerichtet ist, wie der Browser des Benutzers eingerichtet ist und wie HTTP-Proxy-Server zwischen Ihrem Server und dem Benutzer eingerichtet sind. Das einzige Bit, das Sie steuern können, ist, wie Ihr Server eingerichtet ist.

Wenn Sie die beste Chance haben möchten, dass Ihr Javascript zwischengespeichert wird, dann müssen Sie die richtigen HTTP-Header mit der Javascript-Datei senden. Wie Sie das tun, hängt davon ab, welchen Webserver Sie verwenden.

Hier sind ein paar Links, die helfen könnten:

Apache - http://httpd.apache.org/docs/2.0/mod/mod_expires.html

IIS - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0fc16fe7-be45-4033-a5aa-d7fda3c993ff.mspx?mfr=true

4

Der Browser sucht automatisch nach dem, was sie in einem eigenen Cache hat. Es gibt verschiedene Mechanismen, die Sie jedoch zur Steuerung verwenden können.

Blick in die verschiedenen HTTP-Caching-Header, wie zum Beispiel:

  • Last-Modified
  • Verfällt
  • ETag

Der Expires-Header die kritischste davon ist, wenn es darum geht, zum clientseitigen Caching. Wenn Sie eine ferne Zukunft festlegen (z. B. 10 Jahre), wird der Browser (theoretisch) nicht erneut nach dem Server für diese Datei suchen. Natürlich brauchen Sie dann eine Methode, um den Dateinamen zu ändern, wenn sich der Inhalt der Datei ändert. Die meisten Benutzer verwalten dies, indem sie dem Dateipfad eine Build-Nummer hinzufügen.

2

Der Browser kümmert sich um das Caching für Sie.

Wann der Cache geleert wird, hängt teilweise von den Browsereinstellungen und teilweise von den Kopfzeilen ab, die Sie senden. Wenn Sie einen Header Expires festlegen, sollte der Browser die Datei nicht erneut anfordern, bis sie abgelaufen ist. Das Lesen über HTTP Headers könnte Ihnen helfen.

Verwandte Themen