2009-03-26 14 views
2

Ich habe eine Seite, die eine Bilddatei auf Onload-Ereignis herunterladen muss, aber für alle Seitenaufrufe! Jetzt lädt es das Bild im ersten Anruf herunter, aber im zweiten Anruf wird es von temporär und das ist nicht das, was ich will. Ich muss für jede Ladung ein paar Berechnungen anstellen. So möchte ich die Datei löschen, die ich bei jedem Ladevorgang von temporär oder etwas anderem lade, das den Client zwingt, es erneut vom Server herunterzuladen.Kann ich Dateien aus temporären Internetdateien in Javascript löschen?

Eine Javascript-Lösung wird großartig. Vielen Dank.

Antwort

8

Nein, kann man nicht überhaupt etwas zu dem Cache tun mit Javascript, aber Sie können die URL des Bildes ändern, so dass es nicht im Cache ist.

einfach einen Abfrage-String an die URL des Bildes, addieren und die aktuelle Zeit, um es jedes Mal einzigartig zu machen:

<script type="text/javascript"> 
document.write('<img src="images/theImage.gif?t=' + new Date().getTime() + '" alt="" />'); 
</script> 
1

Ich würde den HTTP-Header für das Bild, das heruntergeladen wird, Cache-Control: No-Cache, anstatt mit einigen Javascript "Hack".

+0

Gute Idee, aber die andere Lösung ist besser für mein Problem. Ich ziehe es vor, für dieses Problem erneut auf No-Cache auf ganze Seite herunterzuladen. Danke übrigens! –

+0

IMHO müssen Sie nicht die Kopfzeile für die ganze Seite aber nur für die Bilddatei einstellen! Das Herunterladen des Images erfolgt durch eine separate HTTP-Anfrage. Auf der anderen Seite, da Sie Javascript für den Download sowieso verwenden, scheint die Verwendung dieses Hacks mir angemessen. – chiccodoro

+0

@ chiccodoro, das ist, was ich sagte, 'Ich würde den HTTP-Header für das Bild festlegen ...'. :) – karim79

2

Ich verstehe, dass Sie nach einer Javascript-Lösung suchen, aber der gute Weg, dies zu lösen, ist, HTTP-Antwortheader zu verwenden, die No-Cache- und Ablaufwerte angeben. Wenn Sie keine Kontrolle über die Webserver-Konfiguration mit .htaccess haben, können Sie ein einfaches PHP-Skript erstellen, das diese Header vor der Bereitstellung des Inhalts setzt. In PHP:

header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
1

Sie können auf keinen Fall eine temporäre Datei mit Javascript löschen. Um das Zwischenspeichern zu vermeiden, verwenden Sie den No-Cache-Header, wenn Sie das Image senden. Auf diese Weise wird das Bild jedes Mal heruntergeladen, wenn es angefordert wird.

Liste der Header here.

Sie verwenden müssen:

Cache-Control: no-cache

This ist Microsoft spezifisch.

2

Ändern URL-Zeichenfolge an etwas wie folgt aus:

originalUrl += "?" + new Date().getTime(); 
Verwandte Themen