Gli hosting gestiti mediante cPanel possono essere abilitati al modulo GZIP per la compressione dei file facendo uso di mod_deflate su Apache 2.x: in questo tutorial viene spiegato come fare nel dettaglio.Il vantaggio principale della connessione GZIP consiste nel poter ridurre la dimensione di alcune pagine web del proprio sito che vengono trasmesse dal server, realizzando sia uno speed-up del sito che – nella pratica – riducendo le richieste di banda per eseguire il compito (nota: per velocizzare specificatamente WP leggi questo articolo o questa pagina su come rendere più performante WordPress). cPanel prevede un meccanismo per abilitare questo modulo direttamente dal web, ovvero il modulo mod_deflate – che non è altro, per la cronaca, che il vecchio modulo mod_gzip nelle vecchie versioni di Apache ormai obsolete. Questo significa che per abilitare il modulo GZIP non sarà necessario andare a modificare il file httpd.conf.
cPanel permette di attivare sul server il modulo mod_deflate sia per singolo account che per server (globalmente): il prerequisito comune è quello di aver compilato Apache con il supporto al modulo Deflate.
Come compilare Apache con il mod_deflate
Come prima cosa è necessario verificare che il modulo non sia stato precedentemente installato, digitando da shell:
httpd -t -D DUMP_MODULES
e cercando la presenza di deflate_module (static). In alternativa nei dettagli delle configurazioni precedenti (Previously Saved Config) utilizzando EasyApache, mod_deflate sarà indicato semplicemente come Deflate. Fate login su cPanel WHM (WebHost Manager), e cliccate su EasyApache (Apache Update) sotto la sezione Software. Selezionare Previously Saved Config e fate click su Start customizing based on profile button.
A questo punto è possibile effettuare eventuali altri cambiamenti previsti dal wizard, altrimenti se non è necessario fare altro si può cliccare su Next Step e infine su Exhaustive Options List. Seleziona l’opzione “Deflate” sotto i moduli build-in di Apache, e cliccare su Save and Build per compilare il server con il modulo selezionato.
Alternativa 1: Abilitare la compressione GZIP per account
Fate login sull’account cPanel per l’utente per cui desiderate abilitarlo: a questo punto cliccare su Optimize Website alla voce Software / Services.
Le opzioni che si presenteranno all’utente, a questo punto, possono essere compress all content oppure compress the specified MIME types, con una text box finalizzata a specificare i tipi di file da comprimere scelti (default: text/html text/plain text/xml). Sceglietene uno dei due per abilitare la compressione GZIP su tutti i siti web dell’account in questione. Alla fine ricordatevi di fare click su Update Settings.
Alcuni esempi di tipi MIME possono essere: text/html, text/plain, text/xml, text/css, text/javascript, application/javascript, application/xhtml+xml, application/xml, application/rss+xml, application/atom_xml, application/x-javascript, application/x-httpd-php, application/x-httpd-fastphp, application/x-httpd-eruby, e image/svg+xml.
Alternativa 2: Abilitare la compressione GZIP su tutto il server (configurazione globale)
Fate login sul vostro WebHost Manager (WHM) e fate click su Services Configuration -> Apache Configuration -> Include Editor -> Post VirtualHost Include. Selezionare ora All Versions per l’opzione “I wish to edit the Post VirtualHost configuration include file for”.
Il codice che dovrete inserire è sulla falsariga del seguente (con eventuali modifiche a seconda dei casi): alla fine ricordatevi di cliccare su Update per confermare le modifiche.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
<IfModule mod_setenvif.c>
# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don’t compress already-compressed files
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:avi|mov|mp3|mp4|rm|flv|swf|mp?g)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary
</IfModule>
<IfModule mod_headers.c>
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
Riavviare il servizio Apache per rendere effettive le modifiche.
Alternativa 3: abilitare GZIP direttamente da PHP.ini
Per poter effettuare questa modifica dovrete modificare il PHP.ini del vostro account, solitamente localizzato in /etc/ or /usr/local/lib (diverso dal path delle varie configurazioni di CMS in quanto si tratta di una risorsa di sistema).
Assicuratevi che il valore di questo parametro sia ad On (default Off):
zlib.output_compression = On
Dal momento in cui riavviarete Apache ogni pagina prodotta da PHP – e soltanto queste, quindi non le pagine statiche HTML/CSS – sarà compressa prima di essere inviata al browser.
Potete anche settare, sempre nel PHP.ini, il livello di compressione:
zlib.output_compression_level = 6
Alternativa 4: abilitare GZIP direttamente da .htaccess
Se non potete modificare il file PHP.ini potete inserire questa riga, come alternativa finale, all’interno del file .htaccess.
php_flag zlib.output_compression on