Title dit tout, nous n’avons aucun contrôle sur notre environnement de serveur et, bien que nous puissions leur demander de recompiler Apache pour nous, cela ne se fera pas du jour au lendemain.
Pouvons-nous faire quelque chose si ces modules (mod_expires, mod_headers) ne sont pas disponibles pour vous aider à spécifier que certains contenus (images, js, css) doivent être mis en cache ou avons-nous trop de chance?
Une option consiste à les envoyer via un script PHP et à le faire sortir des en-têtes de mise en cache pour vous. Il accomplit la même chose avec seulement un peu de charge supplémentaire car il a fallu que PHP serve l'image en tant que proxy.
Exemple:
HTML:
<img src="/images/img.php?img=someimage.png">
PHP:
<?php
$filename = $_GET['img'];
$file = '/path/to/file/' . $filename;
// Do verification that the file exists, they're not after any secure
// files, etc. Not shown here
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header("Last-Modified: " . date( "D, j M Y H:i:s", strtotime("- 1 month")));
header("Expires: Thu, 20 Sep 2012 05:00:00 GMT");
header("Cache-Control: max-age=2692000, public");
header("Pragma: cache");
ob_clean();
flush();
readfile($file);
exit;
?>