Incrementare le prestazioni di Apache con modpagespeed

Condividi:

In questo articolo vediamo come attivare un modulo in apache che permette di elaborare i documenti del sito come file html, css, js ecc in modo da velocizzarne l’invio sfruttando anche un meccanismo di caching. Come sistema di riferimenti usiamo un server debian stretch su cui gira il web server apache, ma tutto è facilmente configurabile anche sotto altri sistemi quali Ubuntu, CentOS e sotto Nginx

Installazione

Il modulo è disponibile pacchettizzato nella pagina di Download sul sito modpagespeed. Da qui possiamo copiare l’url del pacchetto che ci interessa secondo la distribuzione e l’architettura e scaricarlo sul webserver tramite wget

Una volta scaricato il file installiamo con dpkg

Verifichimo che il modulo sia stato attivato in apache

Terminata l’installazione riavviamo apache

Configurazione

La configurazione del modulo avviene tramite il file /etc/apache2/mods-available/pagespeed.conf. Queste impostazioni poi possono essere ottimizzate per ciascun sito all’interno del file di configurazione del virtualhost.

L’abilitazione del modulo avviene impostando il valore on della direttiva ModPagespeed Se non vogliamo che il modulo sia attivo per tutti i siti possiamo disabilitarlo globalmente impostando questo valore ad off

La direttiva ModPagespeedRewriteLevel abilita alcuni gruppi di default che contengono alcuni filtri. Se viene lasciata commentata, il valore di default utilizzato è CoreFilters. I valori validi sono PassThrough, CoreFilters e TestingCoreFilters. Se togliamo il commento, con PassThrough non attiviamo nessun filtro

In unione alla precedente direttiva, si possono abilitare o disabilitare ulteriori filtri in maniere più puntuale tramite le direttive ModPagespeedEnableFilters e ModPagespeedDisableFilters
I parametri di queste due direttive sono i nomi dei filtri che vanno separati da una virgola

ModPagespeedFileCachePath è la direttiva che specifica la cartella di cache dove vengono salvati i documenti elaborati dal modulo e che verranno serviti ai clients. Per non ritrovarsi una cartella contenente file appartenenti a siti diversi, è bene differenziare la cartella di cache riservandone una per ciascun sito, cosa che viene fatta all’interno del file virtual host

Verifichiamo che la cartella sopracitata appartenga all’ utente ed al gruppo  www-data e che i permessi siano 755. Eventualmente digitiamo

Terminata la configurazione globale, riavviamo apache

Fine tuning nel file virtual host

Tutte le direttive presenti (e documentate) nel file di configurazione globale, possono essere richiamate all’interno del file di configurazione del sito per una ottimizzazione più puntuale. Inseriamo tutte le righe all’ interno del blocco IfModule in questo modo

Se non abbiamo abilitato il modulo globalmente, attiviamolo qui

La cartella di cache può essere una figlia di quella globale. Creiamola impostandone owner e permessi, dopodiché inseriamola nel file virtualhost

L’attivazione di specifici filtri a livello di sito avviene sempre tramite ModPagespeedEnableFilters

Ed analogamente la disattivazione tramite ModPagespeedDisableFilters

Il filtro rewrite_javascript svolge anche la funzione di minificare il codice javascript

Terminata la configurazione del sito, riavviamo apache

Filtri più comuni

Segue un elenco dei filtri più comuni che possono essere utilizzati

collapse_whitespace Elimina spazi non necessari all’interno del codice html ad esclusione dei tag <pre>
combine_css Unisce più files css in uno solo
combine_heads Riunisce sezioni <head> separate in una sola
combine_javascript Unisce più files js in uno solo
elide_attributes Elimina dai tag attributi non necessari
inline_css Inserisce nella pagina il contenuto di piccoli file css invece che collegarli tramite l’url
inline_javascript Inserisce nella pagina il contenuto di piccoli file js invece che collegarli tramite l’url
insert_ga Inserisce nelle pagine il codice google analytics. Richiede in aggiunta la direttiva ModPagespeedAnalyticsID <Analytics ID>
remove_comments Rimuove i commenti HTML
remove_quotes Rimuove doppi apinon necessari dagli attributi dei tag
rewrite_css Minifica i file css
rewrite_javascript Minifica i file js
trim_urls Rimuove dagli url prefissi non necessari

E’ disponibile un elenco completo dei filtri disponibili con gli esempi di come viene modificato il codice con e senza il filtro attivo