2 Stimmen

Ist es möglich, den Cache des Browsers mit php-Code zu löschen?

Ich habe ein Bild-Upload-Tool in php geschrieben.

Der Benutzer kann eine Datei auswählen, die dann mit einem bestimmten Dateinamen hochgeladen wird. Wenn der Benutzer die Auswahl dieser Datei bereut, kann er auf die Dateieingabe klicken und stattdessen eine andere Datei hochladen, ABER DER DATEINAME IST DER GLEICHE, also speichert der Browser das zuerst hochgeladene Bild. Anstelle des zweiten Bildes zeigt der Browser dann das erste Bild an, obwohl es sich um ein anderes hochgeladenes Bild handelt.

Irgendwie schwer zu erklären...

Wie kann ich das Problem lösen?

Danke

12voto

Jan Hančič Punkte 51654

Deaktivieren Sie entweder die Zwischenspeicherung von Bildern auf Ihrem Webserver oder fügen Sie einen zufälligen Abfrage-String an die src Ihres Bildes.

Mit "zufälliger Abfrage-String" meine ich, dass Sie an die URL des Bildes etwas anhängen, das sich bei jeder Anfrage ändert. Etwas wie dies:

<img src="http://www.example.com/image.jpg?<?php echo Time () ?>" />

Time () gibt den aktuellen TIMESTAMP zurück und ändert sich bei jeder Anfrage, so dass die URL immer anders ist und den Browser zwingt, das Bild jedes Mal herunterzuladen.

1 Stimmen

Was ist eine zufällige Abfragezeichenfolge, möchten Sie diesen Teil bitte etwas genauer erklären?

1 Stimmen

Damit wird lediglich sichergestellt, dass der Browser diese spezifische URL noch nie gesehen hat und daher nicht versucht, eine im Cache gespeicherte Version zu verwenden. Durch das Hinzufügen von time() am Ende der URL stellt @Jan sicher, dass die URL eindeutig ist.

0 Stimmen

Wir verlieren den Vorteil des zwischengespeicherten Elements beim zweiten Laden

0voto

CMG Punkte 351

Ich habe so etwas schon einmal gesehen, aber es war umgekehrt, d. h. ich habe eine Datei vom Server an den Browser geschickt. Der Dateiname änderte sich nicht, aber der Inhalt hätte sich ändern müssen, aber es wurde weiterhin der Inhalt der ursprünglichen Datei angezeigt.

Ich habe das Problem behoben, indem ich eine Einstellung in der php.ini geändert habe:

session.cache_limiter = nocache

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X