2013-02-23 13 views
16

Also mache ich dieses kleine Projekt und ich habe einige Probleme mit dem Fangen. Eine Sache, die nicht funktioniert, ist, dass der Browser die JSON-Datei mit gespeicherten Daten zwischenspeichert und wenn ich den JSON irgendwo anders aktualisiere, kehrt der Browser zur alten Version der JSON-Datei zurück, die er zwischengespeichert hat, und liest diese aus. Leider will ich das nicht. Ich möchte nicht, dass der Browser die Datei überhaupt zwischenspeichert, so dass er jedes Mal, wenn er die Seite lädt, den Server nach der JSON-Datei fragt und entsprechend dieser Datei agiert, und zwar unabhängig von der Datei, die er zwischengespeichert hat. Ich würde aber gerne alle anderen Sachen auf der Seite cachen können, aber wenn das geopfert werden muss, dann ist das ein Opfer, dass ich bereit bin zu machen. Ich Vorstellungsvermögen, dass in JavaScript, dass es einen Anruf sein, der die aktuelle JSON-Datei sagt verwerfen und wieder auf den Server gehen bitten für sie oder so etwas wieWie verhindert man, dass der Browser eine JSON-Datei zwischenspeichert

<script src="mySaveFiles.json" cache="no"> 

oder etwas Derartiges, mir zu helfen zu erreichen, was ich Ich spreche über ... Hilfe?

+0

** caching ..... – arqam

Antwort

33

Der einfachste Weg ist, um die Quellzeichenfolge mit einem zufälligen Parameter anhängen, die auf der Serverseite ignoriert wird

<script src="mySaveFiles.json?nocache=123" ></script> 

Eine Lösung, die das Skript Element mit Hilfe von JavaScript generieren würde und die aktuelle Zeit wie dieser anhängen :

var el = document.createElement(script); 
el.src = 'mySaveFiles.json?nocache=' + (new Date()).getTime(); 
document.head.appendChild(el); 

auf diese Weise wird der Browser nie die JSON-Datei zwischengespeichert werden, da es eine andere Datei (auf den Parameter durch) zu sein scheint, in jedem Gespräch.

+0

Also anstatt ein Tag in der Kopfzeile zu haben, die eine Quelle von mySaveFiles hat, würde ich etwas wie den Code nennen, den Sie dort in einer Funktion zur Verfügung stellen, die zuerst ausgeführt wird, wenn die Seite geladen wird und es würde so wie ich es beschrieben habe? –

+0

@MuggyAte Grundsätzlich ja, – Sirko

+0

Danke. Ich habe einige der anderen Methoden ausprobiert, die von einigen anderen Leuten vorgeschlagen wurden, aber diese scheint am erfolgreichsten zu sein, wenn es darum geht, das zu erreichen, was ich wollte. danke –

0

wenn Sie nicht wollen das Cachen von Daten, dann können Sie die folgenden Meta-Tag verwenden

<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="expires" content="-1"> 
+0

Nun, es würde Wenn ich alles außer der JSON-Datei zwischenspeichern kann, habe ich das schon versucht, aber es scheint die Performance stark zu reduzieren.Ich denke, das wird mein letzter Ausweg, wenn ich die beste Alternative finden kann :( –

+0

Hilft dies beim Stoppen des Caches in der JSON-Datei? Es ist für individuelle HTML-Seite, richtig? @Ranjith – Vaishak

2

zwei Optionen:

  1. ein mySaveFiles.json hinzufügen t Zeitstempel Abfrageparameter an das Ende = der URL.
  2. Ziehen Sie die Datei mit dem XmlHttpRequest-Objekt (möglicherweise müssen Sie abhängig vom Server noch einen Zeitstempel hinzufügen).
6

Einer meiner Favoriten ist nur .htaccess (wenn dies für Sie möglich ist, kann ich sehen, dass nicht)

Disable Cache für mehrere Erweiterungen

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi|json)$"> 
    Header unset Cache-Control 
</FilesMatch> 

Disable Cache für nur 1 Erweiterung

<Files .json> 
    Header unset Cache-Control 
</Files> 

fand ich es hier: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tips

+0

Oh wow das ist eine tolle Lösung Ich muss es versuchen gerade raus :) hoffentlich wird das einfacher sein, als einen Zeitstempel auf Dinge zu setzen oo –

+0

ok ich laufe hier auf ein Problem. Ich habe das eingefügt und das Zeug herausgefiltert, das ich nicht will, aber oben auf der Seite hat es diese Textzeile, die sagt, dass Unset Cache-Control gelöscht wird und ich will nicht, dass diese Textzeile auftaucht. was mache ich? –

+0

Was genau haben Sie in Ihren Code eingefügt? Ich aktualisiere, um den Cache für 1 Erweiterung zu deaktivieren –

Verwandte Themen