Incrementare le prestazioni di Apache con mod pagespeed: differenze tra le versioni

Aggiornato con le nuove impostazioni di default (è inutile esplicitare altre opzioni)
(Aggiornato con le nuove impostazioni di default (è inutile esplicitare altre opzioni))
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}}  
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch|Buster}}
__TOC__  
__TOC__
== Introduzione ==
==Introduzione==
I Google Labs hanno recentemente rilasciato un modulo per il Web server Apache che permette l’ottimizzazione automatica di pagine Web e altre risorse attraverso l’azione di appositi filtri per la riscrittura e fornendo così maggiore velocità di caricamento di tutto il codice HTML, CSS, JavaScript e delle immagini senza rendere necessario alcun intervento manuale sul server. Il modulo non agisce sul codice ''lato server'', quindi non deve essere visto come una possibile soluzione per migliorare script PHP mal riusciti o per velocizzare query SQL non ottimizzate.
I Google Labs hanno recentemente rilasciato un modulo per il Web server Apache che permette l’ottimizzazione automatica di pagine Web e altre risorse attraverso l’azione di appositi filtri per la riscrittura e fornendo così maggiore velocità di caricamento di tutto il codice HTML, CSS, JavaScript e delle immagini senza rendere necessario alcun intervento manuale sul server. Il modulo non agisce sul codice ''lato server'', quindi non deve essere visto come una possibile soluzione per migliorare script PHP mal riusciti o per velocizzare query SQL non ottimizzate.
<br/>
<br />
Il modulo in questione è distribuito sotto licenza [http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0], ma non è incluso nei repository ufficiali Debian a causa dell'utilizzo in bundle di alcune librerie; per una spiegazione delle motivazioni che hanno portato all'esclusione del modulo dai repository Debian si veda ad esempio il seguente [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602316 bug report].
Il modulo in questione è distribuito sotto licenza [http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0], ma non è incluso nei repository ufficiali Debian a causa dell'utilizzo in bundle di alcune librerie; per una spiegazione delle motivazioni che hanno portato all'esclusione del modulo dai repository Debian si veda ad esempio il seguente [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602316 bug report].
 
==Installazione==
== Installazione ==
I Google Labs forniscono un pacchetto DEB di ''mod_pagespeed'' per Debian, sia a 32 bit, sia a 64 bit. Il pacchetto può essere scaricato a questo indirizzo:
I Google Labs forniscono un pacchetto DEB di ''mod_pagespeed'' per Debian, sia a 32 bit, sia a 64 bit. Il pacchetto può essere scaricato a questo indirizzo:
<br/>
<br />
https://developers.google.com/speed/pagespeed/module<br/>
https://developers.google.com/speed/pagespeed/module<br />
Una volta scaricata l'ultima versione del pacchetto:
Una volta scaricata l'ultima versione del pacchetto:<ref>[https://www.modpagespeed.com/doc/download]</ref>
<pre>
<pre>
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
Riga 27: Riga 26:
}}
}}
Quindi abilitiamo il modulo e riavviamo Apache.
Quindi abilitiamo il modulo e riavviamo Apache.
* Fino a Jessie:
*Fino a Jessie:
<pre>
<pre>
# a2enmod pagespeed
# a2enmod pagespeed
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 restart
</pre>
</pre>
* Da Stretch:
*Da Stretch:
<pre>
<pre>
# systemctl reload apache2
# systemctl reload apache2
</pre>
</pre>
L'installazione configura anche un file all'interno della directory <code>/etc/apt/sources.list.d</code>, abilitando un [[repository]] esterno per gli aggiornamenti automatici del modulo.
L'installazione configura anche un file all'interno della directory <code>/etc/apt/sources.list.d</code>, abilitando un [[repository]] esterno per gli aggiornamenti automatici del modulo.
 
==Configurazione==
== Configurazione ==
Dopo l'installazione, può essere utile apportare alcune modifiche alla configurazione del modulo, agendo sul suo file di configurazione principale:
Dopo l'installazione, può essere utile apportare alcune modifiche alla configurazione del modulo, agendo sul suo file di configurazione principale:
<pre>
<pre>
Riga 46: Riga 44:
<pre>
<pre>
<IfModule pagespeed_module>
<IfModule pagespeed_module>
SetOutputFilter
    # Turn on mod_pagespeed. To completely disable mod_pagespeed, you
MOD_PAGESPEED_OUTPUT_FILTER
    # can set this to "off".
  ModPagespeed on
    ModPagespeed on
</pre>
</pre>
che indicano che il modulo è attivo. Se al contrario ci fosse la direttiva ''ModPagespeed off'', cambiamola a ''on'' per attivarlo.
che indicano che il modulo è attivo. Se al contrario ci fosse la direttiva ''ModPagespeed off'', cambiamola a ''on'' per attivarlo.
<br/>
<br />
Poco dopo dovremmo trovare la direttiva:
Poco dopo dovremmo trovare la direttiva:
<pre>
<pre>
# ModPagespeedRewriteLevel CoreFilters
    # ModPagespeedRewriteLevel PassThrough
</pre>
</pre>
Decommentiamola, per attivare i filtri predefiniti del modulo.
Lasciamola commentata, infatti l'opzione predefinita per <code>ModPagespeedRewriteLevel</code> è <code>CoreFilters</code> che permette di avere attivati molti filtri di default che sono quelli ritenuti sicuri per la maggior parte delle applicazioni. Un'altra opzione più aggressiva è <code>TestingCoreFilters</code>, che permette di attivare i filtri sperimentali, ma prima di arrischiarsi è bene testare il sito prima di lasciarli in produzione, mentre <code>PassThrough</code> disabiliterà ogni filtro di default<ref>[https://www.modpagespeed.com/doc/config_filters]</ref>.<br />I filtri di default aggiunti da <code>CoreFilters</code> sono:
<br/>
 
Una ventina di righe più sotto dovremmo trovare la direttiva:
* add_head
<pre>
* combine_css
# ModPagespeedEnableFilters collapse_whitespace,elide_attributes
* combine_javascript
* convert_meta_tags
* extend_cache
* fallback_rewrite_css_urls
* flatten_css_imports
* inline_css
* inline_import_to_link
* inline_javascript
* rewrite_css
* rewrite_images: implica recompress_images, recompress_jpeg, recompress_png, recompress_webp, convert_gif_to_png, strip_image_color_profile, strip_image_meta_data, jpeg_sampling
* rewrite_javascript
* rewrite_style_attributes_with_url
 
Se vogliamo attivare ulteriori direttive lo possiamo fare dopo la riga
    # ModPagespeedEnableFilters collapse_whitespace,elide_attributes
Tra le direttive non fornite di default da <code>CoreFilters</code> è consigliabile aggiungere<pre>   ModPagespeedEnableFilters collapse_whitespace,elide_attributes
    ModPagespeedEnableFilters convert_to_webp_animated
    ModPagespeedEnableFilters remove_comments
    ModPagespeedEnableFilters remove_quotes
    ModPagespeedEnableFilters hint_preload_subresources
</pre>
</pre>
Decommentiamola, e nel frattempo aggiungiamo alcune altre direttive di ottimizzazione:
Sistemiamo i permessi per la directory di cache:<!-- Ma serve? Di default i permessi sono già dati a www-data -->
<pre> 
ModPagespeedEnableFilters combine_css
ModPagespeedEnableFilters rewrite_css,rewrite_javascript
ModPagespeedEnableFilters inline_css,inline_javascript
ModPagespeedEnableFilters rewrite_images
ModPagespeedEnableFilters insert_img_dimensions
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters extend_cache
ModPagespeedEnableFilters remove_quotes
</pre>
Sistemiamo i permessi per la directory di cache:
<pre>
<pre>
# chmod -R a+w /var/cache/mod_pagespeed
# chmod -R a+w /var/cache/mod_pagespeed
</pre>
</pre>
Quindi riavviamo Apache per fargli digerire le modifiche.
Quindi riavviamo Apache per fargli digerire le modifiche.
* Fino a Jessie:
*Fino a Jessie:
<pre>
<pre>
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 restart
</pre>
</pre>
* Da Stretch:
*Da Stretch:
<pre>
<pre>
# systemctl reload apache2
# systemctl reload apache2
</pre>
</pre>
 
== Virtual Host==
== Virtual Host ==
La configurazione precedente applica le stesse impostazioni di ''mod_pagespeed'' a tutti i Virtual Host presenti sul nostro server. È però possibile applicare configurazioni personalizzate per ogni Virtual Host, agendo sul file di configurazione del Virtual Host stesso:
La configurazione precedente applica le stesse impostazioni di mod_pagespeed a tutti i Virtual Host presenti sul nostro server. È però possibile applicare configurazioni personalizzate per ogni Virtual Host, agendo sul file di configurazione del Virtual Host stesso:
<pre>
<pre>
   
   
Riga 116: Riga 121:
</VirtualHost>
</VirtualHost>
</pre>
</pre>
 
==Documentazione==
== Documentazione ==
La documentazione ufficiale è reperibile al seguente indirizzo:
La documentazione ufficiale è reperibile al seguente indirizzo:  
https://developers.google.com/speed/pagespeed/module
https://developers.google.com/speed/pagespeed/module
{{Autori
{{Autori
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
}}
}}
[[Categoria:Web server]]
[[Categoria:Web server]]
<references />