Afbeelding ververst niet

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.267
Hoi,

Ik gebruik fancybox voor het tonen van afbeeldingen in een popup.

Helaas is het zo dat als ik een afbeelding vernieuw deze meestal niet op de website wordt getoond, meestal komt de oude afb. weer tevoorschijn.

Het legen van browser cache help dan meestal , maar daar hebben bezoekers niet veel aan.

Is hier een oplossing voor? een stukje code...........?


Bij voorbaat dank
 
Bedank

Ik denk dat de 1e optie hier niet van toepassing is, het verversen van de pagina helpt niet. het heeft meer met cache te maken

De 2e moet ik kijken of ik er wijs uit kom, of in elk geval iets soortgelijks zoeken.
 
Er wordt erg weinig informatie gegeven over hoe en wat voor website u heeft.

Als de website zelf gecodeerd wordt en de foto's er dus handmatig worden ingezet dan voldoet het om de bestandsnaam te wijzigen.

Als u bijv heeft:

HTML:
<a href = "" fancybox-data="test" > <img src = "foto1.jpg" /> </a>

Dan kunt u er simpelweg van maken

HTML:
<a href = "" fancybox-data="test" > <img src = "foto1_new.jpg" /> </a>

De browser zal dan netjes de nieuwe foto tonen :)
 
Beste

Ik heb bijvoorbeeld dit

<a href = "" fancybox-data="test" > <img src = "fotomap/foto1.jpg" /> </a>

Afbeelding foto1.jpg bevind zich aan de serverkant dus in de map fotomap

nou wordt foto foto1.jpg veranderd , en opnieuw geupload naar de server in de map fotomap

Probleem is dat browser (IE Chrome) deze vernieuwde afbeelding foto1.jpg meestal nog met "oude" inhoud laad zien,
meestal moet ik dan het browsercache verversen.

Ik wil o.a weten of dit misschien met een scriptje of iets in de htaccess is op te lossen.
 
Dat kan, echter dan zend je elke keer de foto opnieuw naar de gebruiker (geen caching).
Dit betekend als ik 10x de foto wil zien u hem 10x zal moeten versturen.

Dat is erg inefficient, kost u meer geld (meer versturen = duurder) en kost performance voor de gebruiker (het is sneller een foto van mijn harde schijf te laden e.g cache dan dat ik hem van u moet ontvangen omdat deze foto "misschien" nieuwer is.)

Een voorbeeld:
U heeft 100MB dataverkeer maximaal.
De foto is 1MB
Ik kijk op 1 avond 100x dezelfde foto.
Dan stuurt u mij 100x 1mb = 100mb.

U zit dan al gelijk op uw limiet.

Als u de eerder voorgestelde naamswijziging toepast dan stuurt u de foto slechts 1x, ik krijg dan pas de nieuwe foto binnengestuurd nadat u de naam aanpast (en er dus echt een andere foto staat). (lees meer onder aan de post)


Het kan wel met het volgende htaccess stukje (deze dient geplaatst te worden in de fotomap):

Code:
<FilesMatch "\.(jpg|jpeg|png)$">
Header always set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header always set Pragma "no-cache"
</FilesMatch>


De betere oplossing

Wat u wellicht kunt doen, omdat ik lees "ik wil een foto uploaden en de website moet automatisch updaten", is een klein stukje php code schrijven die elke foto in de fotomap op de pagina zet.

Als u dan een nieuwe foto upload, dan zal de nieuwe foto ook getoond worden. (let wel, dan dient er alsnog een naamsverschil in de nieuwe geuploade foto te zitten!) maar u hoeft dan niet elke keer code aan te passen.

U zou dan "bloemetje.jpg" verwijderen en "autotje.jpg" uploaden.

De pagina (of eigenlijk het php script) zal dan in de map "fotomap" het bestand autootje.jpg zien staan en die op de website tonen. Het bestand "bloemetje.jpg" ziet hij niet dus zal hij ook niet op de site zetten.
 
Laatst bewerkt:
Bedankt,

Een naam wijzigen van foto dat begrijp ik ,maar dit zou een hoop werk met zich meebrengen.

Geen caching > begrijp ik ook , dan moet de foto waarschijnlijk iedere keer worden verstuurd..

Meer dataverkeer is in dit geval niet zo belangrijk.

dus zoek een zo efficiënte mogelijk oplossing.
 
De zo efficient mogelijke oplossing , zonder de verdere details te weten, is de php oplossing die ik voorstel hierboven :P
 
Mooi , maar in mijn geval de htaccess voorstelling beter.

Code:
<FilesMatch "\.(jpg|jpeg|png)$">
Header always set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header always set Pragma "no-cache"
</FilesMatch>

Was het niet zo dat er een tijdsbestek aan kon?
Code:
max-age=0
 
Dat kan, maar dan is dus je hele principe weg.

Als je erbij zet, 1 dag. (dat foto's 1 dag in cache blijven).
En ik bezoek de website om 8 uur savonds. Jij update om 5 over 8.
De dag erop kijk ik om 3 uur smiddags (dus 1 dag is nog niet verstreken). Dan zie ik dus dezelfde foto als ik de avond ervoor zag.

anyways, een tijd eraan binden kan als volgt:

Code:
<FilesMatch "\.(ico|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=300"
</FilesMatch>

De 300 staat in dat geval voor seconden. Oftewel 5 minutens (300/60 = 5)
 
Beste,

Ik begrijp het , maar dit is voor mij denkelijk de beste oplossing, omdat ik geen bestandsnamen hoef aan te passen zoals bij de php optie.

Bedankt voor reactie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan