Caching van dynamische images in PHP

Pagina: 1
Acties:

  • mrFreeZe
  • Registratie: December 1999
  • Laatst online: 25-05-2025
Ik ontdek zojuist dat m'n browsers (IE, Netscape en Opera) niet meer cachen als ik plaatjes uit php scriptjes load.

Het php scriptje ziet er ongeveer zo uit:

image.php
<?
header("Content-type: image/gif");
readfile ($filename);
?>

dan kun je dit aanroepen met image.php?filename=plaatje.gif (niet zo secure, maar even als gesimplificeerd voorbeeld)

dit werkt prima, en er zal dan ook mooi een gifje in de browser verschijnen, echter, de browser-caching van deze image werkt dan niet. Iedere keer als je dit aanvraagt krijg ik in m'n apachelog een entry met de 200 code en de file-lengte. dit betekent dat de hele gif weer naar de browser wordt gestuurd.

Als ik dit plaatje direct opvraag, dus zonder t scriptje (gewoon http://x/plaatje.gif), dan krijg ik eerst de 200 response, maar de 2e keer een 304 (cached), en de browser haalt het plaatje direct uit de browser cache.. met een hele pagina met veel images gaat dit echt veel sneller!

Kent iemand dit probleem mischien, en wat moet ik er aan doen ?! Ik heb al met header commands 'Last-Modified' en 'Cache-Control' geprobeert, maar verandert ook niks...

Thanks!

Like this yall...


Verwijderd

Kun je dan niet een header meegeven die aangeeft dat ie al gecached is? Net zoals Apache doet zeg maar :??
Misschien heb je wat aan deze link??

Misschien heb je hier meer aan..

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

of een redirect gebruiken naar het plaatje toe? Gebruik ik ook voor mijn webicon.. die overal hetzelfde is op de pagina, terwijl het een random plaatje is.

(trouwens, het is niet een instelling van je browser zelf?)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Waneer je een get parameter meegeeft met je link zal de pagina waarschijnlijk sowieso niet gecahced worden omdat de browser verwacht dat die pagina waarschijnlijk dynamisch opgebouwd gaat worden. Je hebt meer kans waneer je gebruik maak van de mod_rewrite (zoals ook hier bij tweakers gebeurt)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Janoz schreef op 19 augustus 2002 @ 23:01:
Je hebt meer kans waneer je gebruik maak van de mod_rewrite (zoals ook hier bij tweakers gebeurt)

Pardon???
Sinds wanneer wordt mod_rewrite gebruikt? :)

Gewoon php en apache standaard configgen (multiviews is ook al zo'n onzin dat dat _verplicht_ daarvoor zou zijn) en dan dinges.php/blaat aanroepen de PATH_INFO var in _SERVER zal dan de leuke info bevatten.

Verwijderd

Php is een script, dat ( dynamische ) content genereerd ( text, plaatjes, etc ).
Buiten de last modified header moet je ook de expire header setten. Anders
zal IE slim genoeg zijn om te zien dat de conten dynamisch is.
Pagina: 1