PHP
Ich sags mal so. Wenn die Webseite in PHP geschrieben ist (und Frontender + Backender die selbe Person ist) muss man sich nicht zwischendrin auf eine zweite Sprache umstellen - was man bei LESS oder SASS tun müsste.
Den Output am Ende einfach in eine Datei umleiten.
Ja: Cachen. Und zwar „Hardcore“. Also die entstehende Datei auch gleich mit gzip -9 zippen und das ausliefern, falls der UserAgent anzeigt, dass er es mag.
$zippedFile = $file . '.gz';
if ( ! is_file( $zippedFile ) ) {
$error = intval( trim( `gzip -9 -c < '$file' > '$zippedFile' 2> /dev/null; echo $?` ) );
if ( $error != 0 ) {
error_log("fastdeliver.php: error by trying gzip -c < '$file' > '$zippedFile' 2> /dev/null; echo \$?; in a shell");
$_SERVER['HTTP_ACCEPT_ENCODING'] = '';
}
}
if ( false === isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) OR false === strpos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) ) {
header('Content-Length: ' . filesize($file));
readfile( $file );
} else {
header( 'Vary: Accept-Encoding' );
header( 'Content-Encoding: gzip' );
} else {
error_log( "fastdeliver.php: File '$zippedFile' created." );
}
}
header('Content-Length: ' . filesize($zippedFile));
readfile( $zippedFile );
}
Das entlastet den Apache. Man kann den Spaß so automatisieren, dass die Dateien (foo.css
, foo.css.gz
) neu erzeugt werden wenn foo.css.php
ein neueres Datum hat.