Uno dei “trucchi” suggeriti dai programmi che ottimizzano i siti web, tipo Google Page Speed o i Webmaster Tools, è quello di far caricare le immagini e gli altri elementi statici da un sottodominio separato. I browser, infatti, sono impostati per aprire solo un certo numero di connessioni parallele verso il server, in modo da non sovraccaricarlo. Spesso questo limite è basso, con la conseguenza che gli elementi vengono di fatto caricati in sequenza, uno dopo l’altro, senza sfruttare il possibile “parallelismo” del server. Allora gli ottimizzatori suggeriscono di definire un sottodominio tipo immagini.duechiacchiere.it
, al quale tutti gli elementi grafici faranno riferimento. Analogo si può fare per javascript e fogli di stile, volendo. Tophost, il provider che mi ospita, consente di fare questa cosa, e dunque ne ho approfittato al volo.
Di fatto, nel mio caso specifico, l’operazione si suddivide in tre passi. Vediamoli qui di seguito in dettaglio come creare un sottodominio per le immagini su Tophost.
Definire le regole
Nella cartella principale del tuo spazio web crea un file .htaccess
(se usi i permalink personalizzati, probabilmente ce n’è già uno generato da WordPress, non sovrascriverlo mi raccomando). Supponiamo che le tue immagini siano nella cartella /wp-content/themes/ilmiotema/images
. Allora inserirai questo codice:
# Sottodominio immagini.ilmiosito.it
RewriteCond %{HTTP_HOST} immagini.ilmiosito.it [NC]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/ilmiotema/images
RewriteRule (.*) /wp-content/themes/ilmiotema/images/$1 [L]
La voce nel DNS
Aggiungi una nuova voce nel DNS del provider, per dire che immagini.ilmiosito.it
non è altro che un “alias” del sito principale (ma questo i browser non lo sanno). Con Tophost basta andare nel Pannello di controllo, cliccare sul pulsante per la Gestione del DNS, accettare l’avviso di sicurezza (del tipo “se fai casino qui e non ti va il sito, sono cavoli tuoi”, giustamente), e procedere alla schermata successiva. Qui clicca su Aggiungi nuovo record, e compila i campi in modo che
- Type = CNAME
- value = w-02.th.seeweb.it. (il punto finale fa parte della stringa, mentre il “nodo” su cui risiede il tuo sito potrebbe non essere w-02, ma un altro… usa lo stesso valore che trovi nella riga che definisce il dominio principale www)
Aggiorna il tuo tema
A questo punto non rimane che cambiare tutti i riferimenti (nei fogli di stile come nel sorgente della pagina) alle immagini, da www.ilmiosito.it/wp-content/themes/ilmiotema/images/foto.webp
in immagini.ilmiosito.it/foto.webp
, che tra l’altro è pure più breve e facile da ricordare. Vale la pena ricordare che, comunque, questa tecnica potrebbe aumentare il carico di lavoro del server su cui gira il tuo sito: nel caso di grossi portali è ovviamente consigliato avere un vero e proprio ambiente separato da cui servire le immagini, per ottenere reali benefici in tal senso.
Nel mio caso, proprio per evitare questi inconvenienti, ho usato un approccio ibrido, in cui alcune immagini fanno riferimento all’indirizzo vecchio ed altre a quello nuovo. Attivando inoltre alcuni meccanismi di caching a vari livelli (di cui parlerò nelle prossime puntate), l’impatto sul server dovrebbe risultare limitato.
Commenti
E’ utilissimo quanto hai detto ma per un blog come il mio o il tuo secondo me il vantaggio è così piccolo che passa quasi inosservato. Azioni simili vanno bene su grossi portali in cui devi anche gestire e distribuire il carico per non intasare un unico server… per le 4 immagini da presentare ad un utente per caricare il mio blog sarebbe ridicolo (il vero limite è l’ampiezza di banda più che altro) e probabilmente aggiungerebbe un overhead inutile (oltre a diventare un’ulteriore cosa da gestire nel tempo considerato che non si tratta di un’impostazione di default).
Ciao,
Emanuele
PS: credo d’esser nato per fare l’avvocato del diavolo, in ogni caso questa, tra le altre (tante) critiche che ti riservo credimi che è la meno ferma… 😀
@Emanuele: beh, non sono proprio “4” immagini quelle sul tuo blog, ma 43 🙂 Sarebbe interessante fare dei test con software tipo ab (apache benchmark) per capire la reale differenza tra le due impostazioni. Comunque nel mio caso, Google Webmaster Tools mi dice che in media l’utente risparmia qualche secondo con il sottodominio separato che uso, il che tutto sommato non è male 😉
@camu: A furia di racimolare secondi tra un po’ le pagine viaggeranno come schegge, quasi in tempo reale. 😛
PS: ma bisognerà cominciare a pensare ad una tessera fedeltà con raccolta punti… Che sò, 1000 commenti e si vince una pagina sul tuo blog… Vabbè ok sto delirando, colpa della notte insonne… :/
@CyberAngel: si, quella della raccolta punti sarebbe interessante, ci stavo pensando 🙂 Ma poi si rischia che la gente lascia commenti solo per aumentare i punti, e non perché interessata veramente alla discussione…
Cioè a parte tutti i complimenti possibili e immaginabili che ti si possono attribuire, io ti farei una statua! Non solo le informazioni che doni, soprattutto per il modo “adorabile” che hai di scriverle. Grazie! 😀
Risposte al commento di Paolo
LoL adorabile ancora mi mancava
Lo immaginavo 😀 ad ogni modo posso chiedere se esiste un tool online che esegue una scansione del sito e mostri in output tutti i richiami delle immagini presenti in ogni pagina del sito? Così da essere sicuri di cambiare TUTTE le immagini del proprio tema con il corretto indirizzo
Risposte al commento di Paolo
Beh se il sito è in WordPress, puoi cercare nel database che fai molto prima.
Controllando tutte le tabelle? :O Comunque grazie per il suggerimento 😀
Risposte al commento di Paolo
Nah, giusto wp_posts 🙂
Posso disturbarti per l’ultima volta chiedendoti il codice da inserire nel .htacces per bloccare l’accesso al sottodominio? Chiedo troppo lo so 😀
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
Questa è la regola da inserire in .htaccess per il caricamento corretto dei file nella configurazione di WordPress Multisito.
Qualora si volesse mappare la cartella blogs.dir (quella che gestisce i file dei diversi blog creati con WordPress Multisito) in un sottodominio, chi da quale consiglio sulla modifica da effettuare?
Risposte al commento di BloggerPro
@BloggerPro: ho provato a risponderti in privato ma la mail mi è tornata indietro (relying denied per bp). Ho avuto poco tempo, speravo che altri ti rispondessero. Non sono molto esperto di WPMU, ma suppongo che il trucchetto sia lo stesso:
# Sottodominio blogsdir.ilmiosito.it
RewriteCond %{HTTP_HOST} blogsdir.ilmiosito.it [NC]
RewriteCond %{REQUEST_URI} !^/wp-content/blogs.dir
RewriteRule (.*) /wp-content/blogs.dir/$1 [L]
Controllo cos’ha di storto la email.
Ho chiesto perché non so se la regola che ho scritto nel mio commento precedente fa andare in conflitto qualcosa…
Intanto grazie per la risposta camu. 😉