Con questa procedura trovata con una ricerca su internet sono riuscito a risolvere il mio problema relativo alla compressione delle pagine html poiché attualmente sul server dove risiede il mio sito (linux con apache 2.2.19 e php 5.2.17) l’opzione zlib.output_compression è impostata su off, riporto in questo articolo la procedura che ho eseguito.

Per prima cosa devi creare un file php.ini vuoto e scriverci dentro questo codice:

zlib.output_compression = On
zlib.output_compression_level = 6

Poi lo salvi e lo carichi nella root del sito o nella cartella dove è inserito il tuo sito.

La prima opzione serve per attivare la funzione zlib.output_compression che si incaricherà di comprimere le pagine richieste dal browser, la seconda opzione indica il grado di compressione che si vuole avere, 0 nessuna compressione e 9 compressione massima, nel mio caso ho impostato 6 che mi da comunque un buon grado di compressione, eventualmente puoi testare varie opzioni e valutare quella che per te funziona meglio.

Ora nel file .htaccess dovrai inserire il codice seguente:

AddHandler application/x-httpd-php5 .css .html .js
suPHP_ConfigPath /home/username/public_html/

Con la prima opzione farà processare al PHP tutti i file con estensione .css .html .js.

Se hai bisogno di comprimere anche altri file basta aggiungere l’estensione in quella riga.

Non comprimere immagini (.jpg, .png, .gif, ecc) pdf e altri file già compressi, per questi preparo un altro tutorial per come farlo.

La seconda riga serve per indicare dov’è posizionato il file php.ini, dovrai ovviamente sostituire “username” con il tuo username utilizzato sul server, dopo public_html/ puoi , se necessario, inserire il percorso del file php.ini nel caso tu lo abbia messo in una sotto cartella invece che nella root del sito.

Ora che la compressione è attivata per evitare problemi con gli header di risposta dei file .css .html e .js (e anche quelli che avrai eventualmente aggiunto) bisogna creare un altro file php da inserire nella root del sito (o nella cartella dov’è installato il sito) e chiamarlo pre.php, dentro a questo file inserisci il codice seguente:

<?php
$path = pathinfo($_SERVER['SCRIPT_NAME']);
if ($path['extension'] == 'css')  {
    header('Content-type: text/css');
}
if ($path['extension'] == 'js')  {
    header('Content-type: application/x-javascript');
}

Quindi dovrai aggiungere al file php.ini questo codice:

auto_prepend_file = "/home/username/public_html/pre.php"

sostituendo come prima “username” con il tuo username utilizzato per il server. Con questo sistema si andrà a ripristinare gli header dei file compressi e si eviteranno eventuali errori. Nell’eventualità in cui tu abbia del codice xml in questi file all’interno dei tag <?xml ... ?> esso verrà processato dal php, in questo caso aggiungi questo codice al file php.ini:

short_open_tag = 0

Ovviamente ogni situazione è differente quindi bisogna provare e vedere se questo metodo può risolvere il problema.
Prima di fare modifiche consiglio sempre di fare un backup dei file, dovesse andare storto qualcosa basta ripristinare il backup e torna tutto come prima.

Fonte della guida: http://gianlucacrema.com/compressione-gzip

Se invece sul tuo hosting il mod_gzip o il mod_deflate sono attivi leggi qui.

Last edit:
 

3 responses to “Come abilitare la compressione gzip senza il modulo apache mod_gzip attivato”

  1. Gian

    Complimenti, guida utile.
    Ma ti sei dimenticato di mettere all’inizio del file pre.php il “<?php ", senza questo non viene eseguito il file come batch php.
    Purtroppo a me funziona la compressione, ma da problemi di scomparsa del menù. Sono tornato indietro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi formattare meglio il testo con questi tag HTML

Pre Code Bold Italico Link Quote