Apache2 + WordPress + CloudFlare: General Speedups

Shotokan - sabato 24 Agosto

Avete preso un server in culonia che per carita’, va bene per fare torrent2http, e’ veloce genericamente ma caricare piu’ file alla volta, immagini, js, css va un poco in crisi e da quando avete aggiunto quel pizzico di grafica in piu’ sul vostro WordPress e’ tutto piu’ leento, leento, eteerno?
Ecco un paio di consigli su come configurare Apache, WordPress & Cloudflare per convivere insieme velocizzando il tutto.

Cloud… wut?

CloudFlare aiuta diversi siti cachando immagini, javascript, css ed altro ed ottimizzandoli, e quindi facendo da “intermediario” tra SERVER ed UTENTE finale.

Significa:

  • Meno banda consumata
  • Meno ‘risorse’ (CPU/RAM) occupate
  • Maggiore latenza per risultati non ‘cachabili’ o non cachati.

Ma se gia’ ci mettiamo 400ms a contattare il nostro server, aggiungere un ulteriore delay sarebbe pesante.
E come sappiamo, wordpress non e’ il massimo della leggerezza.. Ragioniamoci su prima di ‘ottimizzare’ tutto con cloudflare.

“Ok ma non importa… sara’ un po’ piu’ lento a contattare il server ma appena inizia scarica tutto velocemente!”
Sii… ma l’ssl te la scordi, se non paghi almeno 20$ al mese. (cloudflare non permette l’accesso con SSL nella versione gratis.)

Ok, and now?

Una soluzione sarebbe creare un sottodominio, dove caricare tutti i contenuti nuovi (immagini, js, css), modificando i link sul tema di wordpress ed attivare in quel sottodominio CloudFlare, lasciando il dominio primario (www?) al suo indirizzo non ottimizzato.
…Sembra abbastanza laboriosa come soluzione, scartiamo, anche perche’ dovrei fare tutto questo casino ogni volta che cambio tema??

Un’altra soluzione sarebbe quella di creare un file .htaccess che prenda tutti i contenuti ‘statici’/cachabili, e se riceve una richiesta verso di quelli, redirecti il tutto su uno pseudo-subdomain “static” che sarebbe semplicemente un mirror del www, con cloudflare attivo.

Ok, suona meglio come soluzione. Iniziamo.

.htaccess, that dude.

Se avete installato e configurato correttamente WordPress sul vostro dominio, dovrebbe avervi creato un .htaccess sulla cartella d’installazione.

Sostituite il contenuto di quel file con questo (sostituendo ad aitch.me il vostro sito):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

#Shotokan rules
RewriteCond $0 \.(jpg|jpeg|gif|png|ico|css|js|swf)$
RewriteCond %{HTTP_HOST} !^static.aitch\.me
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ http://aitch.me/$1 [L]

RewriteCond $0 !\.(jpg|jpeg|gif|png|ico|css|js|swf)$
RewriteCond %{HTTP_HOST} ^static.aitch\.me
RewriteRule ^(.*)$ https://aitch.me/$1 [L]
</IfModule>

# END WordPress

Vediamo nel dettaglio cosa fa.
La prima parte e’ quella di default di WordPress, non ci interessa.

La seconda parte (fino al doppio \n) prende e controlla se l’estensione del file richiesto e’ una di quelle cachabili, se lo e’ controlla che il sottodominio attuale non sia gia’ static, e controlla se c’e’ l’https attualmente spento (sarebbe brutto caricare dei file in http quando il sito e’ https.. lasciamo caricare i file dal nostro server e basta in quel caso) ed infine redirecta il browser al sottodominio static, con lo stesso file di richiesta.

La terza parte e’ un controllo inverso: controlla se siamo nel sottodominio static e se il file richiesto non e’ uno di quelli cachabili ci rimanda al dominio principale.

Gimme that “static” subdomain!

Ok, registratevi su CloudFlare, seguite la guida di CloudFlare per impostarlo come nameserver predefinito, togliete il ‘cloud’ da www.sito.it e da sito.it (senza www) e aggiungete un record DNS chiamato static in CNAME di sito.it, ed abilitategli il cloud.

Fatto questo c’e’ solo da dire ad apache cosa cavolo e’ questo sottodominio.
Andiamo su /etc/apache2/sites-available/, troviamo il file di configurazione del nostro dominio (nel mio caso aitch.me) ed apriamolo con un editor qualunque, nano va benissimo.

Nel mio caso nelle prime righe ho questa dicitura:

        ServerName www.aitch.me
        ServerAlias aitch.me

Aggiungiamo un’altro alias, di nome static:

        ServerName www.aitch.me
        ServerAlias aitch.me
        ServerAlias aitch.me

E facciamo apprendere le modifiche ad apache:

service apache2 reload

Aand you’re done! 😀

E si, se ve lo stavate chiedendo si, aitch funziona esattamente cosi’.

Theme made by Koala