Testa att lägga följande överst på sidan:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Det hindrar sidan från att cachas, förhoppningsvis gäller det bilden också.
7 svar · 299 visningar · startad av micke.prag
Jag har en bild på min server som uppdateras ganska ofta. Problemet är att när folk går in på samma sida flera gånger så uppdateras inte bilden eftersom deras cashade bild visas. Hur kan man göra så att webbläsaren alltid hämtar bilden från servern och inte använder sig av sin gamla nerladdade version? Eller är detta ett html-probem?
Testa att lägga följande överst på sidan:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Det hindrar sidan från att cachas, förhoppningsvis gäller det bilden också.
Läste för en tid sedan ett inlägg på php.net om hur man kunde undvika att en bild cache:ades...
Föregående inlägg kanske är mer effektivt, det vet jag inte men tänkte att jag kunde bidraga med den lösningen med:
echo ("<img src=\"blah.gif?".rand(1,999)."\" width=\"100\" height=\"100\">");
Tanken är väl att bilden varje gång får en liten svans med ett random-tal efter sig.
Har inte testat det själv, men hade tänkt använda mig utav denna lösning i framtiden om behovet uppstod.
MVH Patrik
Jag löste det så här:
showpic.php:
<?
Header("Content-type: image/jpeg");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
ImageJpeg(ImageCreateFromJpeg($_GET['path']));
?>
Så är det bara att skriva i html-sidan:
<img src="showpic.php?path=minbild.jpg">
Scriptet funkar ju bara för jpg eftersom det bara är det jag kommer att använda det till men det går ju lätt att göra så att det bara öppnar filen och skickar inehållet oavsett vad det är i.
Nu har jag motsatta problemet. Jag har gjort en sökning via ett formulär med POST. Trycker man sedan bakåt i webbläsaren så står det bara "page has expired".
Kan man då göra så att webbläsaren cachar sökresultatsidan och på så sätt lösa problemet?
<?
echo "<img src=\"elvis.jpg?timestamp=" . microtime() . "\">";
?>
löser cacheproblemet. Att min snygga kodsnutt inte kanske är syntaxmässigt korrekt är en annan femma :)
Du förstod mig nog fel. Din kod gör ju så att bilden inte cachas (eller iallfall alltid hämtas en ny). Det är inte det jag vill. Jag VILL att sidan ska cashas. Om du går via POST till en sida och följer en länk därifrån till en annan sida och sedan trycker bakåt, så funkar inte det.
Om du istället gör din sökning med method="get", gör det någon skillnad ?
För din tests skull kan du lägga följande överst på sidan så du slipper skriva om den:
<?php
$_POST = $_GET;