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";
}
}
}
?>
Oh wow, se perdió un detalle tan importante. ¡Gracias! – CodingWonders90