ugrás a tartalomhoz

PHP kép frissítési probléma

Navee · 2008. Aug. 24. (V), 02.28
Sziasztok!

Az alábbi problémával találtam magam szemben: Van egy admin felületem, amit egy ingatlaniroda dolgait lehet menedzselni. Ingatlanok feltöltése résznél van egy olyan problémám, hogy amikor képet töltök fel (Képfeltöltés: formon keresztül, egyesével, a program átnevezi, átméretezi három különböző méretre, átállítja a jogokat a fájlon stb.), rendben feltölti, kilistázom egy kis indexképpel, de amikor már több képfájl van, és php szinten törlöm az egyiket (a képeket egy pictureX.jpg; X=1,2,3,... formátumban tárolom) akkor, nem frissíti a képet, azaz a régi kép "ragad" bent. Ezt egy F5 orvosolja, de ahogy olvasgattam a dolgok után, van rá "normális" megoldás is. Állítólag ezen headerek beállításával működnie kellene a dolognak, de mégsem teszi:

header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
Ha valakinek van valami ötlete, tippe, tanácsa, kérem segítsen! Elég idegölő a dolog... :(
 
1

Verzióbeállítás

Balogh Tibor · 2008. Aug. 24. (V), 08.23
Ezeket a fejléceket a képhez kell beállítani. Egyébként nem tűnik jó ötletnek csak ezért kikényszeríteni a képek nem-gyorsítótárazását.

A helyedben bevezetném a képek verziószámozását, valahogy így:
picturex.jpg?v=y
2

Verzióbeállítás

Navee · 2008. Aug. 24. (V), 22.31
Hmmm... Igazából nem értem ezt a verziószámozást, ha tudnál egy kicsit bővebben írni, akkor megköszönném.... ;)
3

cache

winston · 2008. Aug. 25. (H), 00.59
a különböző böngészők és egyebek az url alapján gyorsítótárazzák be a tartalmat. vagyis pl be fogja neked cachelni a site.tld/image.jpg képet, és jóesetben, ha a megfelelő fejéceket küldöd ki, akkor addig marad a böngészőben amíg kell (vagy amíg nem törlik, stb.) és újra letölti, amikor szükséges. de a böngésző buta állatfaj, könnyen összezavarodik. ezért, a félreértések elkerülése végett így is kiküldheted a képet: site.tld/image.jpg?v=1. a v=1 gyakorlatilag egy get paraméter, de mivel te nem használod, nem sok vizet zavar
így nem az image.jpg-t tárazza be, hanem az image.jpg?v=1-et. ha aztán átíroz image.jpg?v=2-re, akkor a böngésző számára az egy új elem, mindenképp betölti, nem ragad benn gyorstárban.
mi ezt a megoldást a css/js fileoknál használjuk, ahol a verziószám a repository revisionszáma alapján születik. mivel élesbe csak ritkán kerül ki egy rev, ezért nem változik az oldalon naponta tucatszor a v, csak adott időnként ugrik (akkor viszont nagyot, de ez senkit nem érdekel), de még számtalan megoldás van, hogy mi alapján verziózz