2012-08-06 23 views
8

Actualmente estoy tratando de lograr un método de compresión para mis archivos CSS. Básicamente estoy copiando de la misma manera que lo hago para mis archivos JS, pero no está funcionando. Lo revisé con la herramienta Firebug, pero no se está cargando CSS.Comprimir y almacenar en caché CSS con PHP

¿Cómo puedo llamar al css.php que luego llamará a los archivos comprimidos de CSS?

código Trabajar con JS, el archivo es scripts.php (que no especifica la extensión .js):

<script type="text/javascript" src="js/scripts.php?build=123&load=foo,bar"></script> 

que quería hacer lo mismo para mis archivos CSS:

<link href="styles/css.php?build=123&load=foo,bar/jquery-ui-1.8rc2.custom" type="text/css"> 

El css.php se supone que debe hacer la compresión:

<?php 
error_reporting(E_ERROR); 
// see http://web.archive.org/web/20071211140719/http://www.w3.org/2005/MWI/BPWG/techs/CachingWithPhp 
// $lastModifiedDate must be a GMT Unix Timestamp 
// You can use gmmktime(...) to get such a timestamp 
// getlastmod() also provides this kind of timestamp for the last 
// modification date of the PHP file itself 

function cacheHeaders($lastModifiedDate) { 
    if ($lastModifiedDate) { 
     if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lastModifiedDate) { 
      if (php_sapi_name()=='CGI') { 
       Header("Status: 304 Not Modified"); 
      } else { 
       Header("HTTP/1.0 304 Not Modified"); 
      } 
      exit; 
     } else { 
      $gmtDate = gmdate("D, d M Y H:i:s \G\M\T",$lastModifiedDate); 
      header('Last-Modified: '.$gmtDate); 
     } 
    } 
} 

// This function uses a static variable to track the most recent 
// last modification time 
function lastModificationTime($time=0) { 
    static $last_mod ; 
    if (!isset($last_mod) || $time > $last_mod) { 
     $last_mod = $time ; 
    } 
    return $last_mod ; 
} 

lastModificationTime(filemtime(__FILE__)); 
cacheHeaders(lastModificationTime()); 
header("Content-type: text/css; charset: UTF-8"); 

ob_start ("ob_gzhandler"); 

foreach (explode(",", $_GET['load']) as $value) { 
    if (is_file("$value.css")) { 
     $real_path = mb_strtolower(realpath("$value.css")); 
     if (strpos($real_path, mb_strtolower(dirname(__FILE__))) !== false ||strpos($real_path, mb_strtolower(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR)) !== false) { 
      lastModificationTime(filemtime("$value.css")); 
      include("$value.css"); echo "\n"; 
     } 
    } 
} 
?> 

Respuesta

3

Falta el atributo rel="stylesheet" de la etiqueta <link>. Aparte de eso, el código se ve bien.

Es posible que también desee consultar la pregunta y la respuesta here.

+1

Oh wow, se perdió un detalle tan importante. ¡Gracias! – CodingWonders90

1

Probar minify. Esta clase comprime y almacena en caché js y css.

Cuestiones relacionadas