it-swarm.com.de

Keine mod_expires oder mod_headers in Apache, wie kann ich images / js / css-Dateien zwischenspeichern?

Der Titel sagt schon alles, wir haben keine Kontrolle über unsere Serverumgebung und obwohl wir sie bitten können, Apache für uns neu zu kompilieren, wird dies nicht über Nacht geschehen.

Können wir etwas tun, wenn diese Module (mod_expires, mod_headers) nicht zur Verfügung stehen, um bestimmte Inhalte (images, js, css) zwischenzuspeichern, oder haben wir Pech?

6
Chris

Eine Möglichkeit besteht darin, sie über ein PHP -Skript zu senden und dieses Skript die Header für Sie zwischenspeichern zu lassen. Dasselbe wird mit ein wenig zusätzlichem Aufwand erreicht, da PHP das Image als Proxy bereitstellen muss.

Beispiel:

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;

?>
6
John Conde