Php image generator og "304 Not Modified"
Jeg har lavet en siden, som er ment til bruger som vil dele billeder med hinanden.Dog er der nogle problemer, men størelsen af billederne, da de er indsendt af brugeren.
Når jeg får billeder uploadet gemmer jeg 2 versioner af billeder.
1 Thumb og 1 i orginal størelse.
Dog vil billedet størelse ikke altid passe ind i mit design, derfor har jeg tilført den funtion, at php kan resize billedet
f.eks.
"host.dk/82.100x100.png"
I dette tilfælde vil billedet med id'et 82 blive skaleret til max 100x100 hvor den beholder probertionerne, fra orginal billedet. dog kan dette godt kræve meget cpu tid, spicelt hvis orginal billedet er 2000x2000 pixel.
Jeg har derfor lidt leget med respondet "Not Modified" da billede id'et er uniket og ikke vil blive genbrugt for et ny billede og billeder vil ikke blive ændret, så er der ikke rigtig nogen grund til at min server skal bruge cpu tid på at resize hvis brugeren allerde har en cachede version.
Så mig spørgsmål er om der er en måde hvor på php kan se om browseren allerede har en cachede version af billedet.
Jeg har prøvet mig lidt frem (Se kode under). Dog gav dette problemer med browser som Safari.
Checking if the client is validating his cache and if it is current.
function getRequestHeaders() {
if (function_exists("apache_request_headers")) {
if($headers = apache_request_headers()) {
return $headers;
}
}
$headers = array();
// Grab the IF_MODIFIED_SINCE header
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$headers['If-Modified-Since'] = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
}
return $headers;
}
$headers = getRequestHeaders();
if (isset($headers['If-Modified-Since'])) {
// Client's cache IS current, so we just respond '304 Not Modified'.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fileModTime).' GMT', true, 304);
}
else
{
// Send image
}