ich bin momentan dabei mich mit der komprimierung von css und js Dateien auseinanderzusetzen. Ich habe bereits ein Skript geschrieben das mir die geforderten Css/Js Dateien lädt, komprimiert und als komprimierte .gz Datei abspeichert. Eingebunden wird das ganze z.B. bei Css als php-datei mit dem skript.
Hier also die einbindung des skripts:
PHP-Code:
<LINK rel="stylesheet" type="text/css" href="Css/include.css.php">
PHP-Code:
/**
------------------------------------------------------------------------
Header senden:
------------------------------------------------------------------------
*/
header('content-type: text/css; charset: UTF-8');
header('Accept-Encoding: gzip');
header('Vary: Accept-Encoding');
header('Content-Encoding: gzip');
header('Last-Modified: '. gmdate('D, d M Y H:i:s') .' GMT');
header('cache-control: must-revalidate');
/**
------------------------------------------------------------------------
Dateien durchlaufen:
------------------------------------------------------------------------
*/
for ($i = 0; $i < count($aFiles); $i++)
{
$sFile = $aFiles[$i];
$sCssFile = $sFile .'.css';
$sGzFile = 'gz/'. $sFile .'.css.gz';
$sContent = '';
// Pruefen ob Css-Datei existiert
if (file_exists($sCssFile))
{
// Browserspezifisch einbinden?
if (empty($sBrowser) OR $sBrowser == getBrowser())
{
// Komprimierte Datei vorhanden und noch aktuell?
if (file_exists($sGzFile) AND
(filemtime($sGzFile) >= filemtime($sCssFile)))
{
// Komprimierte Datei laden
$sContent = file_get_contents($sGzFile);
}
else
{
// Css Datei laden
$sContent = file_get_contents($sCssFile);
// Manuelle komprimierung
$sContent = clean_css_code($sContent);
// Gzip komprimierung
$sContent = gzencode($sContent, 6);
// In Datei schreiben
file_put_contents($sGzFile, $sContent);
$bNew = false;
}
}
}
// Inhalt ausgeben
echo $sContent;
}
Das Problem ist nun das bei dem Codec mit gzip anscheinend nur einmal eine ausgabe erzeugt werden kann. Ich habe es auch schon mit ob_start() versucht, dies klappte aber nicht. Ich möchte vorerst versuchen alle Css-Dateien in einer Datei einzubinden, d.h. also ohne weitere http-Requests. Nicht wundern wegen der for-schleife anstatt einer foreach schleife, ist zu testzwecken. er läuft definitiv die schleife 2 mal!
Ich hoffe ich habe es einigermaßen verständlich erklärt.
Schonmal danke

Einen Kommentar schreiben: