HomeBlogOttimizzazione sito Web – Analisi Tempo A (Richiesta)

Ottimizzazione sito Web – Analisi Tempo A (Richiesta)

Scritto il -   - Massimo Della Rovere

Il primo capitolo della nostra guida che riguarda l’ottimizzazione di un sito web affronterà l’analisi del Tempo A che indica il tempo necessario da quando l’utente richiede la visualizzazione di una pagina web a quando questa richiesta arriva al nostro server web. Questa zona di tempo non è sempre facile da ottimizzare, anche perchè molti aspetti non dipendono da noi, ma dipendono dal traffico internet presente in quel momento tra i vari nodi, il nostro provider di collegamento da dove eseguiamo la richiesta e molti altri fattori che dipendono dalla rete in generale.

Schema generale del processo

In ogni caso ci sono degli aspetti che possiamo migliorare, come ad esempio la scelta di un DNS molto veloce e la replica di istanze web su diverse zone geografiche che permettono una maggiore vicinanza al richiedente e quindi migliore latenza. Quando facciamo una richiesta con il nostro browser di una pagina qualsiasi ci sembra tutto instantaneo ma in realtà le operazioni e i passaggi da fare sono diversi, per capire cosa succede realmente vi allego un semplice schemino:

Per capire questo schema bisogna tener presente che quando facciamo una richiesta di una pagina web in realtà il nostro sistema dovrà generare più richieste per eseguire l’intera operazione, ad esempio prima di tutto cercherà di convertire il nome dominio presente nel valore URL in un’indirizzo IP, questa operazione viene eseguita facendo una richiesta a dei server particolari chiamati DNS, una volta che il nostro sistema conosce l’indirizzo IP procede ad un’instradamento di rete che eseguirà vari salti chiamati gateway prima di arrivare al server web che ospita la pagina da noi richiesta. Facciamo un esempio, se io richiedo la pagina google.com il mio sistema prima esegue una richiesta DNS agli indirizzi specificati sul mio PC o sul mio router locale.

A questo punto riceverà indietro il valore IP 74.125.229.179 e inoltrerà una seconda richiesta sulla porta HTTP 80 del server di destinazione per richiedere la pagina web. Il ciclo sembrerebbe finito, ma in realtà non è così, infatti una volta ricevuta la pagina web il browser analizza la presenza di altre risorse come immagini, javascript, fogli stile, ect, etc ed esegue altre richieste fino al completamento della pagina e quindi la sua visualizzazione completa.

In ogni caso se analizziamo la singola richiesta il giro è questo: La nostra postazione genera una richiesta di rete che viene dirottata al nostro router locale, il router è collegato con la centrale del nostro provider che girerà la richiesta alla rete internet, nella rete internet troveremo dei gateway che possono essere altri router o server che eseguono l’instradamento della nostra richiesta verso il server di destinazione, il numero dei passaggi dipenda dalla posizione geografica del richiedente e della destinazione e anche dalla configurazione di bilanciamento traffico presente nei nodi. Se siete curiosi di vedere i vari passaggi di una richiesta usate il tools traceroute.

Come abbiamo già visto la prima richiesta  è quella verso un DNS per la risoluzione del nome, qui consiglio di controllare le performance del vostro DNS collegato al server web, molte volte i DNS messi a disposizione su hosting condivisi non sono molto performanti, se doveste trovare dei problemi su questo aspetto vi consiglio di cercare soluzioni alternative come ROUTE 53.

OK, adesso ritorniamo sull’obiettivo della nostra guida. Dato che noi vogliamo migliorare il tempo necessario alla visualizzazione della nostra pagina (per quanto riguarda la zona A di tempo) e non possiamo intervenire direttamente nella configurazione di questo complesso giro, l’unica cosa che possiamo fare è ridurre il numero di richieste necessarie alla nostra pagina.

Consiglio 1 – Ridurre richieste DNS

Non usate troppe risorse esterne che puntano a nome di domini diversi, questa caratteristica viene rilevata dal tools GTMextrix nella sezione YSlow - Reduce DNS lookups. Infatti questa tecnica aumenta le richieste DNS necessarie alla composizione della pagina e quindi riduce sensibilmente i tempi di risposta e relative perfomance. Cercate di concentrare le risorse sugli stessi domini.

Consiglio 2 – Unire codice javascript

Se nella vostra pagina web indicate dei collegamenti a molte risorse javascript di piccole dimensioni, cercate di unificare tutto in unico file, in questa maniera riducete sensibilmente il numero di richieste necessarie, questa caratteristica viene controllata dal tools pagespeed online tramite il parametro “inline small javascript”. Ad esempio se usate jQuery ed alcuni piccoli plugin fissi nelle vostre pagine web, mettete tutto dentro un’unico file che potete chiamate jquery-package.js o altro ed effettuate una sola richiesta ad esso. Stesso discorso può essere valido anche per i file CSS non create troppi file ma cercate di utilizzare meno richieste.

Consiglio 3 - Utilizzare la tecnica sprite per immagini

Nei file CSS molte volte utilizziamo dei collegamenti a risorse immagini per la visualizzazione di alcuni elementi grafici, se utilizzate molte immagini cercate di utilizzare la tecnica degli sprite CSS spiegata in questo articolo CSS Sprite. Infatti, molte volte ho verificato da alcuni clienti che ci voleva più tempo ad indirizzare la risorsa che a caricarla, quindi consiglio vivamente questo approccio che riduce notevolmente i tempi di caricamento.

Un’altra piccola particolarità per migliorare i tempi di caricamento che può essere applicata ad immagini di piccole dimensione come il background della pagina o dei titoli è quella di specificare direttamente nel file CSS il codice binario dell’immagine tramite il parametro base64.

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSU.....);

Consiglio 4 – Header Http per scadenza cache

Utilizzate gli header di cache control per le risorse statiche come immagini, stili e javascript, in questa maniera il browser la prima volta farà una richiesta completa, ma le volte successive troverà la risorsa direttamente in cache e non effettuerà un’ulteriore richiesta al vostro server web. Se utilizzate apache potete intervenire direttamente sul file di configurazione del vostro virtual host o in caso contrario sul file .htaccess vi riporto un esempio:

ExpiresActive on
ExpiresByType image/jpg "access plus 90 days"
ExpiresByType image/jpeg "access plus 90 days"
ExpiresByType image/gif "access plus 90 days"
ExpiresByType image/png "access plus 90 days"
ExpiresByType text/css "access plus 90 days"
ExpiresByType image/x-icon "access plus 90 days"
ExpiresByType application/javascript "access plus 90 days"

Consiglio 5 – Utilizzare strumenti di controllo e test

Utilizzate dei tools specifici per controllare il numero delle richieste generate da una pagina web, potete usare GTmetrix, Firebug di Firefox e Google Chrome selezionando il menu strumenti per lo sviluppatore. Vi riporto qui di seguito una schermata di esempio:

Indice generale della guida ottimizzazione sito web

Autore:
Massimo Della Rovere
Articoli:
140
Website:
http://startbyzero.com/
Nato a Roma nel 1968, appassionato di informatica, programmatore e sistemista su IBM iSeries, esperto in procedure web con PHP e MySQL, grande utilizzatore dei prodotti Google, Linux, Wordpress ed Amazon AWS. Attualmente vive in Perù nella città di Lima, da dove porta avanti il suo progetto favorito riguardante il blog multitematico di startbyzero.com. Per contattarlo basta seguirlo sul profilo pubblico presente nel social network di google+.

Scrivi un tuo commento o qualche consiglio