Gelöschte Bilder trotzdem im Speicher

sajonara

Mitglied
Hallo
ich habe folgendes Problem:

ich habe z.B. 5 Fotos auf dem Server

1156_1.jpg
1156_2.jpg
1156_3.jpg
1156_4.jpg
1156_5.jpg

jetzt lösche ich mit unlink das foto 1156_3.jpg und wende im script ein "rename" an, sodass die Reihenfolge wieder hergestellt ist.
Aus 1156_4.jpg wird 1156_3.jpg usw.

Bis hier funktioniert alles prima, ABER
wenn ich die Bilder wieder auf dem Bildschirm anzeigen lasse, so zieht er sich aus dem Cache des Brouwser das alte gelöschte Bild 1156_3.jpg!!

Wie kann ich das vermeiden? Erst wenn ich auf eine andere Seite gehe und dann zur Bilderseite zurückkehre und dann refreshe, zeigt er alle Bilder an wie sie sein sollen.

Das ist ein Cache-Problem....
Aber wie löst man das Problem?
 
Vielleicht reicht es den Dateien E-Tags zu verschaffen oder diese anders zu gestalten für .jpg oder die Expires-Header kürzer machen.
Das kann man alles per .htaccess ändern oder in den Einstellungen des WebServers.
 
Den Timestamp kann ich leider nicht anhängen, da die Daten von jemand anderem weiterverarbeitet werden.

Es muss doch etwas leichteres geben.... Ich stelle mir die seite einfach zu refreshen müßte doch ausreichen.. aber wie?
 
Ich habe es in der Zwischezeit auch mit <meta http-equiv="expires" content="0">
versucht. Leider ohne Erfolg.

Wenn ich das 1156_3.jpg gelöscht habe holt er sich trozdem nicht die aktuellste Version.
Erst wenn ich im Brouwser oben auf "neu laden" gehe.

Zur Info: den php-script habe ich oberhalb des headers gesetzt, sodass er erst einmal die Neu-Nummerierung vornimmt...

>>Nochmal: Die Header per .htaccess oder über den Befehl header() in PHP (soweit das >>Möglich ist bei dir)
Kannst Du mir kurz sagen was Du genau mit per .htaccess oder über den Befehl header() in PHP meinst Ich bin nicht so firm in der programmierung und habe momentan nur Bahnhof verstanden...
 
Dies zum Beispiel ist eine meiner .htaccess Dateien. Diese Datei erstellst du direkt in dem Ordner unter dem alle Bilder zu finden sind (egal wenn es noch Unterordner gibt):
Code:
# add expire dates to the files
ExpiresActive On
ExpiresDefault A300
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800

# add ETag to the files
<FilesMatch "\.(gif|jpe?g|png|ico)$">
	FileETag Size
</FilesMatch>

Die Angaben für Expires* sind alle in Sekunden mit vorangestelltem A. Das kannst du ändern wie du willst oder auch auf 1 setzen wenn der Browser nach einer Sekunde das Bild ausm Cache schmeißen soll.

Der ETag macht Änderungen aber besser deutlich (find ich). Der Browser hat auch ein ETag gespeichert für alle Dateien im Cache. Sobald diese Unterschiedlich sind lädt er die Datei neu (hier ist es die Dateigröße als Prüfsumme).

Vorsicht mit deinem Traffic dabei ;) mehr Einstellung zum ETag gibs bei Google und Wiki
 
Hallo ZodiacXP,
also wenn ich Dich richtig verstanden habe...
Ich habe eine Datei ".htaccess" mit Inhalt Deines scriptes erstellt und diese Datei ins Verzeichnis auf dem server, wo ich die Bilder hinspeicher, abgespeichert.

Ich habe nichts verändert....

Und.... es passiert gar nichts...
Also vom Prinzip habe ich verstanden, dass das ETag herrausfindet, ob ein Bild Namens 1156_3.jpg die gleiche Größe hat, wie die im Speicher des Brouwsers, wenn nicht, wird neu geladen...
 
Ja genau. Der Browser sollte dann auch neu laden. Verrückt das es bei dir nicht passiert.
Vielleicht kommen noch andere Ideen oder ich hab was übersehen.
 
Zurück