88,6 → 88,30 |
} |
|
private function envoyerImage($id, $image_binaire, $format, $methode) { |
$gestion_formats_images = new ImageRecreation($this->config); |
$dossier = $gestion_formats_images->obtenirDossierPourFormat($id, $format); |
$nom_fichier = $gestion_formats_images->convertirIdBddVersNomFichier($id, $format); |
|
$last_modified_time = filemtime($dossier.'/'.$nom_fichier); |
|
// On génère l'ETAG faible |
$etag = 'W/"' . md5($last_modified_time) . '"'; |
|
// On définit les bons headers |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $last_modified_time) . " GMT"); |
header('Cache-Control: public, max-age=604800'); // On peut ici changer la durée de validité du cache |
header("Etag: $etag"); |
|
// On vérifie les headers envoyés dans la requête |
if ( |
(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) === $last_modified_time) || |
(isset($_SERVER['HTTP_IF_NONE_MATCH']) && $etag === trim($_SERVER['HTTP_IF_NONE_MATCH'])) |
) { |
// On renvoit une 304 si on n'a rien modifié depuis |
header('HTTP/1.1 304 Not Modified'); |
exit(); |
} |
|
if ($methode == self::METHODE_AFFICHAGE) { |
header('Content-Type: image/jpeg'); |
} else { |