1. Dare più memoria a WordPress

Per dar più memoria a WordPress – per eseguire gli script PHP – editare il file wp-config.php.

# vi wp-config.php

Poi aggiungere la seguente riga all’inizio del file.

define('WP_MEMORY_LIMIT', '128M');

In questo modo WordPress avrà più memoria a disposizione per eseguire gli script. Una cosa da tener conto è quanta memoria viene collocata a PHP sul server, se la memoria è inferiore a quella impostata in WordPress, si riceverà un errore (una pagina bianca).

2. Comprimere JavaScript ed eliminare eventuali risorse inutili

Per velocizzare WordPress è importante diminuire i requests (le risorse esterne che una pagina richiede) e comprimere (minify) gli script, i file CSS e i file HTML. Come prima cosa dare un occhiata al codice HTML ed eliminare tutto quello che non serve o che potrebbe rallentare e rendere insicura l’applicazione.

2.1 Eliminare gli script non usati

Con il mio tema WordPress mi carica tre script dal wp_head che servono per la corretta funzionalità di alcune funzioni incluse. Se non si usano queste funzioni si può tranquillamente rimuoverle.

<script type='text/javascript' src='../../wp-content/themes/temascelto/js/ddsmoothmenu.js'> 
<script type='text/javascript' src='../../wp-content/themes/temascelto/js/menubar.js'>
<script type='text/javascript' src='../../wp-content/themes/temascelto/js/googletranslate.js'>

Un altro problema in relazione al fare inserire automaticamente gli script da WordPress è che si trovano nella cartella “wp-content“, cosa che rivelerebbe il nome della cartella usata che è stato cambiato per motivi di sicurezza (vedi guida sulla sicurezza WordPress). Quindi nel caso si avesse bisogno di un qualche script creare per esempio una cartella “js”, spostare nel suo interno tutti gli script, rimuovere gli script dal file default-filter.php e infine aggiungere manualmente gli script nel file header.php o footer.php.

Per rimouovere gli script editare il file wp-includes/default-filters.php.

default-filters.php wp_head

Cancellare o commentare nella parte “Actions” i wp_head che finiscono con scripts come wp_enqueue_scripts, wp_print_footer_scripts, wp_print_head_scripts e wp_footer_scripts. Fatto ciò gli script non verranno più aggiunti e non ve ne sarà più alcuna traccia nel codice della pagina.

2.2 Comprimere i JavaScript

Nel caso si dovessero usare dei JavaScript comprimerli e, se possibile, creare un file solo che contiene il codice – per diminuire i requests – di più script in uno. Per fare ciò creare uno script che si chiama script.js e copiare il contenuto dei tre script in esso.

Per comprimere gli script visitare www.shrinker.ch, copiare ed incollare il testo contenuto nello script e cliccare su Shrink. Infine copiare il codice generato e inserirlo con un editore di testo nello script.

Una volta compressi gli script aggiungerli manualmente in header.php o footer.php vedi esempio sottostante.

<script type='text/javascript' src='https://christeninformatica.ch/js/script.js'>

3. Comprimere i file CSS

Ora comprimere tutti i file CSS e se possibile unire i diversi file in uno. Andare su www.shrinker.ch, copiare il testo del file CSS nella campo apposito e cliccare su “Shrink!”.

4. Installare WP-SUPER-CACHE

È anche molto importante per una buona performance di servire le pagine dalla cache così da diminuire gli accessi alla banca dati e l’esecuzione di script PHP. Per fare ciò usare un cache plugin come wp-super-cache.

Scaricare wp-super-cache su wp-super-cache e copiare il contenuto del zip nella cartella plugins. Una volta copiato wp-super-cache nella cartella apparirà sotto plugins installati in WordPress. Cliccare su attiva.

Ora andare alla pagina di amministrazione del plugin per attivare la funzione di caching. Nella scheda advanced settings mettere il visto nei seguenti quadratini:

  1. Utilizza mod_rewrite per servire i file in cache.
  2. Non servire pagine cache per gli utenti conosciuto (Raccomandato)
  3. Don’t cache pages with GET parameters. (?x=y at the end of a url)
  4. Rigenerazione cache. Serve un file supercache agli utenti anonimi quando un nuovo file é stato generato. (Raccomandato)
  5. Clear all cache files when a post or page is published or updated.
  6. Ricarica la sola pagina in uso quando vengono effettuati dei commenti.

Poi più in basso scegliere di cancellare la cache una volta al giorno e quando si pubblica un nuovo articolo o si effettua una modifica. Una volta fatto ciò premere su aggiorna stato.

Ora appare un messaggio che ci informa che le regole mod_rewrite devono essere aggiornate, se Apache può scrivere e il nome del file è .htaccess, il cambiamento avverrà automaticamente una volta cliccato su aggiorna, ma se per motivi di sicurezza il file è stato rinominato, editare il file e aggiungere le righe generate dal plugin. Le regole generate si trovano in fondo alla pagina nella sezione avanzate.

Ecco le regole rewrite da usare:

# BEGIN WPSuperCache

RewriteEngine On
RewriteBase /
#If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f
RewriteRule ^(.*) "/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz" [L]

RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{HTTPS} !on
RewriteCond %{DOCUMENT_ROOT}/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index.html.gz -f
RewriteRule ^(.*) "/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index.html.gz" [L]

RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f
RewriteRule ^(.*) "/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L]

RewriteCond %{REQUEST_URI} !^.*[^/]$
RewriteCond %{REQUEST_URI} !^.*//.*$
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTPS} !on
RewriteCond %{DOCUMENT_ROOT}/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index.html -f
RewriteRule ^(.*) "/chitblog_contenuto/cache/supercache/%{SERVER_NAME}/$1/index.html" [L]

# END WPSuperCache

Copiare e incollare il primo pezzo senza i commenti e tutto quello che non serve nel file .htaccess.

Per il resto delle impostazioni usare il file httpd.conf.

<Directory /unacartella/chitblog/>
Options -ExecCGI -Indexes +FollowSymLinks -Includes
DirectoryIndex index.php /index.php
AllowOverride FileInfo
Order Allow,Deny
Allow from all
<FilesMatch "\.html\.gz$">
 ForceType text/html
 FileETag None
</FilesMatch>
AddEncoding gzip .gz
AddType text/html .gz
Header set Vary "Accept-Encoding, Cookie"
Header set Cache-Control 'max-age=3, must-revalidate'
SetEnvIfNoCase Request_URI \.gz$ no-gzip
ExpiresActive On
ExpiresByType text/html A3
</Directory>

Se si osserva il codice HTML in fondo alla pagina apparirà il seguente messaggio:

<!– Dynamic page generated in 0.278 seconds. –>
<!– Cached page generated by WP-Super-Cache on 2013-02-16 08:32:55 –>

Un ulteriore test possiamo effettuarlo usando il wp-supercache. Andare nella scheda “facile” del menu di wp-super-cache e testare la cache cliccando su “Test cache”. Aspettare un attimino e se si ottiene un risultato positivo abbiamo finito.

Con wp-supercache si ha la possibilità di installare dei plugins, un plugin molto utile è minify. Per installare il plugin aggiuntivo per wp-super-cache e attivarlo seguire i seguenti passi.

1.Download the current version and unzip. Move WPSCMin.php into the plugins subdirectory of WP Super Cache. If yours is a standard WordPress install, this will be wp-content/plugins/wp-super-cache/plugins/.

Scarica l’attuale versione del plugin: Minify. “Unzippa” e sposta il file WPSCMIN.php nella cartella wp-content/plugins/wp-super-cache/plugins/. Se si ha cambiato la cartella wp-content avrà un altro nome.

2.Download the current version of Minify and unzip. Move the min directory into the plugins subdirectory of WP Super Cache, right next to WPSCMin.php.

3.Log into your site, go to the WP Super Cache config page, and scroll to the bottom. Enable HTML Minify, and you’re done!

Una volta installato il plugin aggiuntivo apparirà nel submenu plugins di wp-super-cache, HTML Minify, selezionare Enabled e cliccare su update. Ora se guardiamo il codice della pagina vediamo che è tutto ordinato e non vi sono più spazi.

5. Laverage browser caching

Aggiungere il seguente codice nel file di configurazione di Apache (httpd.conf).

<filesMatch ".(ico|pdf|jpg|jpeg|png|gif|js|css)$">
   Header set Cache-Control "max-age=16000000, public"
</filesMatch>

6. Comprimere le immagini

Consiglio di impostare la grandezza e la posizione delle immagini nel file CSS e di ridurre eventualmente le dimensioni delle immagini se sono troppo larghe con un tool come per esempio Gimp o Photoshop.

Nel mio caso utilizzo le classi left e right con un larghezza di 310px e modifico le dimensioni delle immagini a 310px di larghezza, in caso contrario il server dovrebbe scaricare un file molto più grande del necessario per modificarne poi le dimensioni. Se volessi invece un immagine grande la larghezza del blog ne userei una di 730px di larghezza.

Per comprimere le immagini si potrebbe usare Photoshop, è facile, basta aggiungere l’immagine che si vuole comprime e poi nel menu “file” scegliere “Save for Web“.

Photoshop Save for Web

7. Enable compression

Un altra cosa da fare e comprimere i file serviti dal server, per ancora diminuire la dimensione dei dati che un client deve scaricare. Per fare ciò bisogna impostare max-age e attivare deflate. Aggiungere le seguenti righe nel file di configurazione di Apache (httpd.conf):

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

8. Specificare un Character Set

Aggiungere il seguente codice nel file di configurazione di Apache (httpd.conf):

AddDefaultCharset UTF-8

9. Test finale

Per testare la velocità usare il “Google Online Page Speed Test Insights“: Google Online Page Speed Test Insights. Inserire la URL del sito o blog che si vuole velocizzare e cliccare su analyze. Come si puoi vedere dall’immagine sottostante il mio blog ha ottenuto 93 punti su 100 che è già un buon punteggio.

Google Online Page Speed Test

Se testando il vosto blog o sito non doveste ottenere un buon risultato seguire le istruzioni del Page Speed Test insights di Google.