Keep it Terron

Comprimere i CSS

IL PROBLEMA

Stavo cercando di ottimizzare al meglio RapTxt.it quando mi è venuta l’idea di controllare su s.google se PHP contiene qualche funzione per ottimizzare le dimensioni dei CSS.
Ebbene si, come ci si poteva immaginare PHP incorpora un’ottima funzione che permette la compressione delle pagine prima di essere inviate al browser.
Infatti, mentre le immagini sono già compresse, codice html e CSS sono testo puro non compresso.
Ci viene quindi in aiuto PHP con la funzione ‘ob_gzhandler’ e/o Apache con la funzione ‘mod_gzip’ che ci permette di comprimere fino al 75% i fogli di stile.

IL CODICE DA USARE

ob_start ("ob_gzhandler");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 ;
$ExpStr = "Expires: " .
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);
?>

Ecco cosa fa il codice:

  • Usa ob_gzhandler per inviare dati compressi. La funzione si accerta che il browser accetti l’encoding ‘gzip,deflate’, e in caso negativo il testo viene inviato non-compresso.
  • Invia un header che contiene il tipo di contenuto e il set di caratteri – in questo caso text/css e UTF-8.
  • Poi invia un ‘cache-control http header’. Qui ‘must-revalidate’ si assicura che il contenuto inviato è aggiornato e non è obsoleto.
  • Il passo finale è spedire un header che dica quando il contenuto contenuto nella cache scada. In questo caso è settato ad un’ora.

PRIMO METODO

Questo è il metodo più semplice ed immediato da usare.
Infatti basta conoscere leggermente PHP e piazzare il codice mostrato sopra all’interno del CSS.
Poi, bisogna rinominare il CSS cambiandogli l’estensione in .php e linkandolo come segue:

@import url(mycss.php);

SECONDO METODO

Il secondo metodo è molto più elegante e chiaro. C’è di contro che bisogna mettere mano al file .htaccess.
Sono necessari due passi per implementare questo metodo.

Primo

Salvate il codice di sopra come ‘gzip-css.php’ nella directory che contiene il CSS che volete usare.

Secondo

Poi, inserite il codice di sotto in un file .htaccess che andrete a salvare nella stessa directory del vostro CSS:

AddHandler application/x-httpd-php .css
php_value auto_prepend_file gzip-css.php
php_flag zlib.output_compression On

Ecco cosa fa:

  • La prima riga dice ad Apache di mandare tutti i file .css all’handler di PHP.
  • La seconda riga aggiunge il contenuto dello script gzip-css.php al CSS.
  • Opzionale: La terza riga dice ad Apache di usare la compressione zlib per tutti i file che parsa. Se usate questa cmpressione non c’è bisogno di inserire ob_start ("ob_gzhandler"); nel codice visto all’inizio. Fra l’altro, inserendo questa riga, apache comprimerà anche le pagine php e html rendendole più leggere e veloci da scaricare.

Commenti

La tua opinione