Dall'avvento di tecniche client-side come AJAX, le pagine Web sono sempre più complesse e pesanti: parte dell'elaborazione è infatti a carico del client.
AJAX ha trasformato dei semplici siti web in vere e proprie applicazioni che spesso rendono il lavoro più rapido una volta inizializzate, ma richiedono più tempo per poter scaricare tutti gli script necessari al loro funzionamento. Un esempio emblematico di questo fenomeno è Gmail, la celeberrima applicazione Web per la gestione di una casella di posta, che, seppur funzionale e innovativa, presenta tempi di caricamento sicuramente maggiori rispetto ad un classica mailbox IMAP presente qualche anno fa su qualsiasi portale Web.
In queste ultime lezioni della guida discuteremo di una particolare tecnica che cerca di risolvere questo problema di performance, sentito soprattutto su connessioni analogiche non a banda larga.
Il concetto
Con Lazy Loading (caricamento pigro) si intende un download di script on demand, ovvero solamente quando essi sono effettivamente necessari per il prosieguo dell'applicazione.
Ecco un esempio teorico: immaginiamo un'applicazione organizzata a tab. Il primo tab presenta una rubrica di contatti, il secondo tab un calendar per la gestione degli eventi e un terzo tab che funge da file system remoto. Ciascun tab presenta uno script JavaScript di inizializzazione (che per comodità chiameremo contact.js, calendar.js e filemanager.js).
Come è facile intuire non è molto sensato obbligare il client a scaricare tutti i file all'inizializzazione dell'applicazione in quanto non è detto che l'utente corrente debba visualizzare tutti i tab disponibili.
Con il Lazy Loading è possibile forzare il download dello script di inizializzazione di un determinato tab solamente nel momento in cui l'utente preme sul tab. Ovviamente un successivo click su un tab già precedentemente aperto, non farà scaricare nuovamente lo script, in quanto già scaricato precedentemente. Questa tecnica presenta quindi notevoli vantaggi:
- l'inizializzazione dell'applicazione è più rapida;
- il carico globale di banda è inferiore, in quanto viene scaricato solamente JavaScript necessario
- esiste la possibilità di creare JavaScript personalizzato che viene scaricato successivamente a fronte di particolari comportamenti dell'utente;
- è possibile bypassare la "same-domain policy" in quanto è possibile scaricare script da qualsiasi dominio, anche diverso da quello corrente.