CSS tömörítés
Mi másra lehetne alkalmas egy ilyen verőfényes vasárnap délután, mint a CSS-ek betömörítésére. Ebből az alkalomból összedrótoztam egy kis PHP scriptet, amit ideális esetben mindig akkor fogunk lefuttatni, amikor a dev környezetből kipakoljuk a művet élesbe.
<?php
$tplDir = '/var/www/site/';
// definiáljuk a css-eket
$fileArr = array(
'scripts/validation/validation.css',
'scripts/scriptaculous/autocomplete.css',
'templates/common.css',
'templates/content/module.css',
'templates/pages/module.css',
);
foreach($fileArr AS $file) {
// ez lesz az új fájlok kiterjesztése
$compressedFile = str_replace('.css', '.compressed.css', $file);
$bc = $env->getFileContent($tplDir.$file); // kiszedjük a $bc változóba a css-ek tartalmát (fopen, curl, akármi...)
if($bc) {
$bc = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $bc);
$bc = preg_replace('![\\n\\r\\t]!', "", $bc);
$bc = preg_replace('! *([\\{\\};,:]) *!', "$1", $bc);
$bc = preg_replace('!\\}!', "}\\n", $bc);
// sortörések + import css-ek fájlneveinek cserélése
$bc = str_replace(array("\\r\\n", "\\r", "\\n", ".css"), array('', '', '', '.compressed.css'), $bc);
touch($tplDir.$compressedFile);
$f = fopen($tplDir.$compressedFile, "w");
fwrite($f, $bc);
fclose($f);
}
}
?>
Beolvassa egyenként a fájlok tartalmát, szépen kiszedi a felesleges szóközöket, sortöréseket, meg minden egyebet, majd az így létrejött új fájlok kapnak egy .compressed.css kiterjesztést - ezekre hivatkozunk az éles site HTML kódjában, az eredetiek pedig megmaradnak a fejlesztéshez.
Házi feladat: ugyanezt JavaScriptre.

én a Minify -t használom erre ( http://code.google.com/p/minify/ ), egy redirect viszi rá a .js és .css fájlokat, megnézi, hogy módosult-e a saját cache-éhez képest, és ha igen, akkor újra összecsomagolja… ügyes cucc ez is, bár tény, hogy kicsit több sor a kódja (bár a caching miatt mindegy). Csak php5 alatt megy (legalábbis ezt állítja magáról, nem próbáltam ki…)