it-swarm-eu.dev

Žádné mod_expires nebo mod_headers v Apache, jak mohu ukládat soubory obrázků / js / css do mezipaměti?

Název říká vše, nemáme kontrolu nad prostředím našeho serveru a přestože můžeme od nich požádat, aby nám Apache zkompilovali, nestane se to přes noc.

Existuje něco, co můžeme udělat, je, že tyto moduly (mod_expires, mod_headers) nejsou k dispozici, aby pomohly určit určitý obsah (obrázky, js, css) by měly být uloženy v mezipaměti, nebo máme smůlu?

6
Chris

Jednou z možností je poslat je skriptem PHP a nechat si skript z mezipaměti záhlaví. To samé dosahuje pouze malou režií navíc, protože musel PHP sloužit obrazu jako proxy.

Příklad:

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