Molto spesso si vedono pagine lente nel caricarsi, questo a volte è dovuto al Java,  per via del fatto che molti servizi sono localizzati esternamente alla pagina che contiene il codice, vedi banner, social plugin ecc.

 

Elementi che si caricano con il tag <script>, però se la risorsa esterna non risponde in tempi celeri, il broswer che sta interrogando la pagina, la bloccherà rendendone il caricamento estremamente lentissimo oppure lasciando la pagina bianca.

 

E allora che fare? Si potrebbe provare con un <iframe> che però funziona bene solo con banner e\o oggetti di dimensioni ben definite, ma non funziona con elementi dinamici. Si potrebbero quindi mettere i codici javascript in fondo al codice prima della chiusura del </body>, ma anche in questo caso se sussiste la necessità di un determinato posizionamento nella pagina non va bene.

 

Allora proviamo a vedere cosa succede con il caricamento asincrono del codice javascript, dove in pratica il broswer prima terminerà di caricare tutto il codice e poi farà il download del codice esterno, così in caso di blocco della risorsa esterna l’unico elemento a mancare nella pagina sarà solo quello del codice javascript.

Per poter implementare questa tecnica è necessario inserire questo codice:

<script type="text/javascript">
(function() {
  // creo un elemento di tipo script
  var asjs = document.createElement('script');
  // definisco il valore dell'attributo type
  asjs.type = 'text/javascript';
  // imposto il caricamento asincrono
  asjs.async = true;
  // imposto il valore dell'attributo src
  asjs.src ='http://www.sitoesterno.com/servizio.js';
  // accodo il tag script creato dinamicamente al tag head o body
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(asjs);
}());
</script>

Opportunamente ed ovviamente modificato per i propri usi, si può posizionare dove vogliamo, l’unico pegno da pagare è che l’elemento incorporato sarà caricato più lentamente, questo punto non rimane che usare Pingdom per verificare la velocità di caricamento della pagina.

 

Written by AS