Avatar billede doomstone-dk- Nybegynder
02. september 2009 - 23:15 Der er 1 løsning

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
}
Avatar billede doomstone-dk- Nybegynder
07. september 2009 - 20:41 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester