Magazine

Ottimizzazione Sito Web per Diminuire il suo Consumo Energetico

Creato il 20 maggio 2012 da Ecoglobo @EcoGlobo

È da un pò di tempo che sto lavorando sull’ottimizzazione del sito web con lo scopo di ridurre i tempi di caricamento del sito, principalmente per offrire a tutti voi una migliore esperienza di navigazione sul nostro blog e secondariamente, ma non di importanza, per cercare di risparmiare ogni giorno Watt e quindi centesimi di euro dalla bolletta di  luce e telefono di migliaia di famiglie, siete davvero tanti a seguire il nostro blog ;)

Come ottimizzare la velocità di un sito internet

Ma quanti Watt si consumano in media per scaricare una pagina web? I Watt consumati dipendono da tantissimi fattori, in linea generale dal: tipo di computer usato, tipo di linea ADSL, infrastruttura Internet, Server, Database, PHP.

Concentrandoci solamente sul computer dell’utente vediamo molto schematicamente quanto energia spendiamo per ricevere e visualizzare una pagina.

Consumo medio computer60 Watt/ora

Tempo medio scaricamento pagina4 secondi

Quanti Watt consumo in 4 secondi? Basta una semplice proporzione… :)

60 Watt : 3600 secondi = X_watt : 4 secondi

Quindi avrei:

Watt consumati in 4 secondi:  ( 60 x 4 ) / 3.600 = 0.06  Watt/pagina

Tempo medio di una visita: 3 minuti (180 secondi)

Watt consumati al secondo: 60/3.600 = 0.016 Watt/secondo

Consumo medio singolo utente: 0.16 Watt/secondo x 180 secondi = 2.88 Watt

Consumo medio mensile: 2.88 Watt/visita x 7.000 visite = 20.160 Watt/mese

Consumo medio annuale: 20.160 Watt/mese  x 12 mesi = 241.920 Watt/anno

Come possiamo diminuire il consumo energetico di un sito web?

Bene, la prima cosa da fare è abbassare i tempi di risposta delle pagine.

Vediamo brevemente quanta energia consuma il nostro PC solamente per scaricare una pagina.

Consumo energetico per scaricare le pagine web viste in media in un mese:

0.066 x 17.000 pagine = 1.122 Watt/mese

Consumo energetico in un anno:

1122 Watt/mese x 12 mesi 13.464 Watt/anno

Se riuscissimo solamente ad abbassare il tempo di caricamento delle nostre pagine anche solo di un secondo otterremmo dei grandi risultati non solo per la felicità di tutti i nostri utenti, ma anche avremo un grosso risparmio energetico!

Passando ad esempio da 4 a 3 secondi per scaricare una pagina si avrà:

Watt consumati in 3 secondi: ( 60 x 3 ) / 3.600 = 0.05 Watt/secondo

Consumo medio in un mese: 0.05 x 17.000 pagine = 850 Watt/mese

Consumo medio anno: 850 Watt/mese x 12 = 10.200 Watt/anno

Quindi riducendo di un solo secondo i tempi di caricamento del nostro sito avremo un

risparmio sui computer dei nostri lettori di:

13.464 – 10.200 = 3.264 Watt/anno

In questo lungo periodo mi sono posto continue e sempre nuove domande su come poter abbassare i tempi di caricamento di questo blog e qui vorrei riportare la mia esperienza fin qui giunta…

Questa guida è rivolta a tutti gli utenti di Internet, sia essi normali navigatori sia web master e responsabili web vari.

Vorrei premettere che naturalmente non mi assumo alcuna responsabilità per danni che potrebbero essere causati da tale guida ai vostri siti o blog, ogni cosa la farete a vostro rischio e pericolo ;)

Qui sotto ho voluto creare uno schema molto semplificato di come avviene la comunicazione su Internet, mettendo in evidenza a grandi linee i punti critici che determinano i tempi per ricevere un articolo una volta che clicchiamo su di un link.

come ottimizzare e velocizzare un sito o blog su Internet

Ottimizzazione di un sito Internet

L’obiettivo che mi sono posto è quello di migliorare l’esperienza degli utenti che navigano il mio sito, minore è il tempo per caricare una pagina e maggiore sarà il tempo che un utente dedicherà alla lettura dell’articolo o alla navigazione verso un altro post.

Riducendo il tempo di download delle pagine del blog ottengo quindi un risparmio:

  • sia sul tempo che l’utente pazientemente dovrà attendere;
  • sia inciderò in modo inferiore sui consumi derivati dall’utilizzo per un tempo minore dei server, delle linee dati di trasmissione su Internet, etc…

Prima di iniziare ad elencare i punti su cui sono intervenuto per ottimizzare il blog, vi suggerisco di eseguire un paio di volte dei test che misureranno la velocità del vostro sito/blog prima di iniziare con il vero e proprio lavoro di ottimizzazione.

Io ho utilizzato i seguenti:

A fine ottimizzazione del sito potrete così verificare il miglioramento nelle prestazioni raggiunto a seguito del vostro lavoro di ottimizzazione.

Veniamo ora all’elenco degli interventi più importanti che ho intrapreso per migliorare le prestazioni di questo blog:

  1. Usare browser efficienti
  2. Unire i fogli di stili CSS e Javascript
  3. Eliminare codice PHP inutile
  4. Compattare il codice HTML, CSS, Javascript
  5. Ottimizzare TUTTE le immagini
  6. Ottimizzare Database
  7. Caching contenuti
  8. Usare le librerie Google Ajax Libraries API
  9. Usare server efficienti 
  10. Codice Javascript in fondo alla pagina 
  11. Usare solo i plugin veramente necessari
  12. Stop a chi ruba le nostre immagini e la nostra banda

Usare browser efficienti

Il primissimo consiglio che vorrei dare è rivolto a TUTTI, sia utenti navigatori che sviluppatori di siti web. È

Usare browser efficienti e veloci come chromefirefox, safari permette di scaricare le pagine molto più velocemente di Internet Explorer, oltre al fatto che sono dei browser molto più sicuri contro i virus!

Unire i fogli di stili CSS in un solo foglio

In linea generale ogni risorsa (immagine, video, css, javascript, etc..)  presente sulla vostra pagina genera una richiesta (è la freccia rossa nello schema di sopra) da parte del computer dell’utente per essere scaricata (freccia verde). Partendo da questo, è chiaro che tanto più riusciamo a concentrare risorse omogenee su di una singola risorsa, e tanto più risparmieremo in termini di richieste totali da eseguire. Ogni richiesta infatti, comporta un certo tempo per essere completata.

Per quanto riguarda i fogli di stile CSS è opportuno cercare quanto possibile di concentrare in uno stesso file TUTTI i singoli fogli di stile CSS usati nel sito. Questo è valido anche per TUTTI i codici Javascript usati.

Per svolgere questa operazione ho proceduto in questo modo:

  1. Ho scaricato tramite FTP i diversi file CSS
  2. Li ho messi tutti in una stessa cartella
  3. Ho aperto tutti i fogli di stile scaricati con Dreamweaver (potete utilizzare qualsiasi editor)
  4. Ho creato un nuovo foglio di stile
  5. Ho copiato sul nuovo foglio tutti i fogli di stile scaricati, mettendo un commento iniziale ad ogni foglio nel nuovo file
  6. Molto pazientemente ho fuso tutto il codice, eliminando informazioni duplicate, etc..
  7. Ho eseguito un procedimento analogo per il codice Javascript ;)

Compattare il codice HTML, CSS, Javascript

Per compattare il codice intendo eliminare da esso tutti gli spazi inutili, i molteplici a capo, le istruzioni inutili o duplicate, etc..

Puoi svolgere questa operazione sia a mano… sia utilizzando tool online veloci ed efficaci. Di seguito ne elenco alcuni:

Javascript ->http://javascriptcompressor.com/

JavaScript/CSS  -> http://refresh-sf.com/yui/

CSS  ->  http://www.csscompressor.com/

CSS  ->  http://www.cssoptimiser.com/

HTML  ->  http://www.textfixer.com/html/compress-html-compression.php

HTML ->  http://htmlcompressor.com/compressor.html

Usare solo i plugin veramente necessari

Nel corso dello sviluppo di un blog, come questo ad esempio, mi sono trovato all’inizio a fare un uso abnorme di plugin. :) Se vuoi usare tutti questi plugin è a tuo rischio…perché ogni plugin che installi comporta una INEVITABILE percentuale di rallentamento del tuo sito/blog. Pertanto occorre determinare esclusivamente i plugin di cui si ha veramente bisogno.

La domanda che spesso mi sono fatto è stata:

Il plugin che sto per installare serve davvero ai miei lettori?

Ottimizzare TUTTE le immagini

Le immagini sono la risorsa in un sito/blog che più pesano sui tempi di risposta di un sito. I video non li consideriamo nel peso di una pagina poiché generalmente sono sempre caricati tramite youtube risultano ininfluenti sui tempi di caricamento della pagina.

Quanto più riusciremo ad ottimizzare le immagini del nostro sito e tanto più rileveremo prestazioni elevate del nostro scattante blog.

É importante ottimizzare TUTTE le immagini del sito/blog intendendo quindi sia le immagini che compongono la grafica del sito, sia le immagini e foto usate dentro gli articoli.

In WordPress esiste un simpatico plugin WP-Smush in grado di fare gran parte di questo noioso lavoro. Questo plugin infatti ottimizza SOLAMENTE le immagini che carichiamo negli articoli. Quindi le immagini della grafica del sito andranno tutte ottimizzate a parte. Come? Se non avete Photoshop potete usare webresize un ottimo tool online che vi permetterà di ridurre la dimensione delle immagini mantenendo quasi invariata la qualità.

Caching dei contenuti

Letteralmente è memorizzare i contenuti del sito maggiormente visti in una memoria, in modo tale che sia facilmente e velocemente recuperabile lo stesso contenuto ad una sua richiesta successiva.

Questa è forse l’operazione che più ci permetterà di guadagnare in termini di performance del nostro sito se ben fatta.

Io suggerisco di utilizzare WP Super Cache un plugin per WordPress che crea delle pagine HTML statiche a partire da ogni pagina dinamica. Così, ad ogni nuovo accesso, si evita di effettuare nuove richieste alleggerendo il carico sul database, interprete PHP e server.

In più, se vuoi un’ottimizzazione spinta del tuo blog  puoi decidere di installare DB Cache, che memorizza in un unico file di testo tutte le richieste fatte verso il database.

Eliminare codice PHP inutile

Senza entrare troppo nei dettagli, per codice php inutile intendo tutte le funzioni nel caso della mia piattaforma WordPress che causano un inutile lavoro dell’interprete PHP.

Io ho eliminato senza problemi le seguenti funzioni PHP in grassetto:

<title><?php bloginfo(‘name’); ?><?php bloginfo(‘description’); ?></title>
<meta http-equiv=”Content-Type” content=”<?php bloginfo(‘html_type’); ?>; charset=<?php bloginfo(‘charset’); ?>” />
<link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen” />
<link rel=”alternate” type=”application/rss+xml” title=”RSS 2.0″ href=”<?php bloginfo(‘rss2_url’); ?>” />

Ho sostituito le funzioni PHP sopra con direttamente il risultato qui sotto:

<title>Tecnologie Sostenibili e Risparmio Energetico – EcoGlobo.it</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8“ />
<link rel=”stylesheet” href=”http://www.ecoglobo.it/pathname/style.css” type=”text/css” media=”screen” />
<link rel=”alternate” type=”application/rss+xml” title=”RSS 2.0″ href=”http://www.ecoglobo.it/rss/” />

Codice Javascript in fondo alla pagina 

Il codice Javascript comporta di un certo tempo per essere eseguito a discapito del tempo di visualizzazione della pagina nel browser.

Spostando il codice Javascript nella parte bassa della pagina dai la possibilità ai navigatori di iniziare a vedere prima la pagina.

ATTENZIONE: non sempre è possibile spostare il codice Javascript, poiché molte parti della pagina potrebbero servirsi di esso nella fase iniziale di caricamento della pagina. Occorre verificare di volta in volta quali codici poter spostare!

Usare le librerie Google Ajax Libraries API

Se anche sul blog fai uso di framework Javascript come jQuery, MooTools, etc… puoi usare le librerie di Google. In questo modo ridurrai tutte le richieste verso gli script sul tuo server, che invece saranno caricati dai server di Google.

Probabilmente i tuoi visitatori avranno già visitato in precedenza un altro sito che utilizza queste stesse librerie, in questo modo con alta probabilità l’utente avrà nella sua cache del browser gli stessi script, azzerando i tempi di caricamento di questi script e diminuendo i tempi di caricamento della pagina.

Per WordPress puoi scaricare  il plugin Google AJAX Libraries API.

Ottimizzare il Database

Una volta a settimana è consigliato l’ottimizzazione del database del sito attraverso il PhpMyAdmin, oppure puoi usare uno tra questi 3 plugin per wordpress:

  • Optimize DB
  • WP-Optimize
  • WP-DBManager

Usare server efficienti

Tutte le ottimizzazioni precedenti potrebbero risultare parzialmente inutili, se poi la piattaforma web che ospita il tuo sito non è veloce ed efficiente. Per questo, è opportuno affidarsi a servizi di qualità, o se il budget è minimo affidarsi ad hosting condivisi che hanno livelli di efficienza sufficienti.

Io sto sperimentando con grande meraviglia e soddisfazione HostGator un servizio di hosting alimentato al 130% con energia eolica, che mi ha consentito di abbattere i consumi e le emissioni di CO2 dovute all’utilizzo dei server che mi ospitano.

Stop a chi ruba le nostre immagini e la nostra banda

Fermiamo tutti i siti e blog che rubano il link delle nostre immagini e lo inseriscono sulle loro pagine, questo comporta un gravissimo problema:

ogni volta che le loro pagine sono caricate gli utenti si collegano con il nostro server per scaricare l’immagine da noi

Questo comporta che noi avremo solo un consumo inutile di banda in quanto impegneremo il nostro server solo per trasmettere le nostre immagini ed il sito che ci ha rubato l’immagine avrà il vantaggio a sua volta di diminuire il consumo di banda poiché saremo noi ad offrirgliela gratuitamente! Questo processo di rubarci banda ed immagini dal nostro sito o blog si chiama hotlinking.

Vediamo in breve come fermare l’hotlinking dal nostro sito.

Se avete accesso al file .htaccess sul vostro spazio web dovrete semplicemente aggiungere le seguenti righe, cambiando miosito.it con il vostro:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://miosito.it/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://miosito.it$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.miosito.it/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.miosito.it$      [NC]

# Permette a  FeedBurner di accedere alle immagini, altrimenti eliminate le righe feedburner
RewriteCond %{HTTP_REFERER} !^http://www.feedburner.com/.*$  [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/.*$  [NC]
RewriteCond %{HTTP_REFERER} !^http://feedburner.google.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds2.feedburner.com/.*$ [NC]
# Permette a Google Reader di accedere alle immagini
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$  [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
# Permette ai motori di ricerca di accedere alle immagini
RewriteCond %{HTTP_REFERER} !search?q=cache  [NC]
RewriteCond %{HTTP_REFERER} !google.  [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$
http://img833.imageshack.us/img833/8117/stophotlinking.jpg [R,NC]

L’ultima regola (è scritta su due righe poiché non entrava, voi scrivetela su una sola riga) è una contromossa a tutti quelli che fin ora vi hanno rubato ingiustamente le vostre immagini e la vostra preziosa banda. Tramite quest’ultima regola questi “siti scrocconi” visualizzeranno questa simpatica immagine che ho voluto mettere a disposizione a tutti voi liberamente:

come fermare hotlinking sito web

Da ora in poi il vostro sito o blog avrà molta più banda libera disponibile solamente verso i vostri utenti. Con questo prezioso consiglio contribuiremo in modo molto efficacie ad avere il nostro server più scarico e sempre pronto e reattivo per rispondere solamente ai navigatori del nostro sito.

Buona ottimizzazione del sito o blog  a TUTTI!

Qui sotto puoi lasciarmi liberamente un tuo pensiero, commento, esperienza o critica ;)

Se l’articolo ti è stato utile, condividilo con i tuoi amici su facebook twitter e g+ tramite un click qui sotto!


Ritornare alla prima pagina di Logo Paperblog