FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Hej,
genererar en bild (.png) från en dynamisk url av typen /script.php?hej=3&hå=4 Hur kan jag tvinga browsern att cacha bilden ifråga? Verkar inte som om varken IE eller firefox bryr sig. Så här ser headern ut: Citat:
|
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Servern ska väl returnera status 304 och inte 200, något som apache sköter av sig själv om det är en statisk fil.
Jag har kollat en nginx-server som vi använder på jobbet och den skickar 304. Det enda jag kan se i confen ang detta är följande: Kod:
if (-f $request_filename) { expires 30d; break; } |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Oj, missade att det var en dynamiskt genererad bild.
Testa med att skicka http status 304 "Not Modified" |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Jag har knappat ihop lite kod för en liknande grej tidigare.
$lastmodts är unix timestamp (alltså sekunder sedan 1970, 4 bytes) för senaste uppdatering. Måste inte vara från filemtime(), kan lika gärna t.ex. hämtas från databasen. Man kan även gå direkt på att skapa en datum/tid-sträng ($lastmod), men den måste i så fall vara rätt formaterad. PHP-kod:
Eventuellt behöver man även lägga till en rad sist i .htaccess: RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] Alternativt kan man behöva använda apache_request_headers() istället för $_SERVER, beroende på hur PHP är installerat. |
||
![]() |
![]() |
Svara |
|
|