2012-04-15 8 views
0

kurz löschen: Ich bin Neuling, aber ich versuche, das Beste gerade nach vorne zu fragen, aber bitte versuchen Sie es mit mir nachsichtig zu sein;)jQuery Ajax-Aufruf - cached Werte

ich nach einer Lösung gesucht, um meinen Problem für eine Weile und zwei Themen:

  1. Prevent browser caching of jQuery AJAX call result
  2. Can you clear jquery ajax cache?

nahe kommen und s wie einige wunderbare Lösungen, leider funktionieren sie nicht mit meiner Situation.

Ich brauche einen CGI-Befehl an eine IP-Kamera zu senden, um den jQuery.ajax() -Aufruf verwenden. Ich bekomme und verändere oft das Ergebnis. Also kann ich nicht zulassen, dass der Browser das Ergebnis zwischenspeichert! Ich weiß, und oft über diese Option zu lesen (siehe Thema 1.):

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

Aber in meinem Fall nicht funktioniert, da die Kamera CGI-Befehlsstruktur mit dem Zeitstempel nicht den Befehl angebracht arbeiten. Anstatt also die Antwort zu bekommen, die ich brauche, werde ich einen Fehler bekommen.

Danach dachte ich, ich kann die jQuery-Code übernehmen den Zeitstempel zu entfernen, die angebracht ist, wenn Sie die Option ‚Cache: false‘ gesetzt. Aber nachdem ich einige Kommentare lesen (siehe Thema 2.):

Also, wenn Sie verwenden Cache: false, jQuery fügen Sie einfach einen zusätzlichen Parameter an die URL mit einer aktuellen Zeit. Es macht für den lokalen Browser die URL eine andere wie es wahrscheinlich im lokalen Cache hat und es leitet die Anfrage an den Server weiter. Nichts mehr.

Also habe ich herausgefunden, dass mir nicht helfen würde.

Eine Lösung des Themas 2 wäre "Cache-Control" gleich "max-age = 0" hinzuzufügen, die lokale Einlösen ausschalten, in den Server-Antwort-Header. Aber auch hier funktioniert es einfach nicht, da ich keinen Zugriff oder überhaupt auf die Software der IP-Kamera habe.

Ich denke, eine Lösung wäre, das Caching für diesen speziellen Anruf zu deaktivieren oder zu löschen. Eine andere Lösung könnte sein, das Caching auf andere Weise zu stoppen.

So hat jemand eine Idee, wie ich die Web-Browser die im Cache gespeicherten Antworten stoppen machen verwenden, wenn ich die AJAX-Event zwei Mal hintereinander anrufen? (Laden Sie die Website würde helfen, ist aber auch ein Nein in diesem Fall).

Danke für alle Antworten im Voraus, wenn Sie weitere Informationen benötigen, mein Problem deutlicher zu machen, fühlen Sie sich zu fragen, frei.

Grüßen, lihume

+0

Was fordern Sie eine URL .htaccess auf IIS zu benutzen? Wie lautet die Antwort? Ist es ein Strom oder was? Es ist nicht klar, warum genau Sie den Cache löschen müssen. –

+0

Ich benutze die im CGI-Befehl eingebauten Kameras, um den Status einer Einstellung zu erhalten. Als Beispiel frage ich "Sind die IR LEDs ein- oder ausgeschaltet?" - "param.cgi? Cmd = getinfrared" - Die Antwort ist eine Variable: 'var infrarystat = on'; Wenn ich dies jetzt mit einem anderen CGI-Befehl 'param.cgi? cmd = settinfrared & -infrarystat = off' ändere und die Seite wieder öffne, wird es nicht den aktuellen Zustand anzeigen, da fälschliches Caching ich immer noch das alte Ergebnis der IR-LEDs bekommen werde aus. – lihume

Antwort

0

Versuchen Sie, ein zufälliges Argument mit jeder Anforderung hinzufügen. param.cgi? Cmd = getinfrared & fixme = 21EC2020-3AEA-1069-A2DD-08002B30309D

Generieren Sie ein neues GUID mit jeder Anforderung und dies wird der Browser denken, dass es eine neue Ressource zum ersten Mal anfordert. Die CGI-Software sollte einfach das zusätzliche Argument ignorieren ...

+0

Ich habe es versucht, aber es funktioniert nicht! Der CGI-Befehl ist irgendwie streng. Das Hinzufügen von zusätzlichen, nicht erwarteten Argumenten wie einem Zeitstempel oder einer GUID führt zu einem Fehler. – lihume

0

Sie haben nicht angegeben, welchen Server Sie verwenden, daher bin ich mir nicht sicher, ob dies für Sie funktioniert.

Was Sie tun können, ist .htaccess

Diese verwenden sollten, mit allen Unix-Typ-Servern arbeiten, aber Sie müssen vollständige Zugriffsberechtigungen diese installieren.

<FilesMatch "\.(php|cgi|pl|htm)$"> 
ExpiresActive Off 
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" 
Header set Pragma "no-cache" 
</FilesMatch> 

Dies ist ein Thread zu, wie

http://forums.iis.net/t/1151878.aspx