Web Performance  Optimization Alessandro Martin [email_address] www.thinkpragmatic.net
Agenda La velocità è importante?
Da cosa dipende?
Best practice
Analisi dal vivo
Conclusioni
->  Novità
La velocità è  importante?
Google
Bing
e noi  comuni  mortali?
Campione di siti editoriali Fonte: http://www.watchingwebsites.com
Campione di siti ecommerce Fonte: http://www.watchingwebsites.com
Convinti?
Da cosa dipende la  velocità   di un sito?
Ha il maggiore impatto: Velocità del  server ?
Velocità  codice ?
Velocità del  database ?
no.
2 o 3 cose che sapete GET /pippo.html GET /style.css GET /script.js GET /img.jpg pippo.html style.css script.js img.jpg Browser Server
Fonte: http://yuiblog.com backend frontend
80%   del tempo di caricamente  percepito dall'utente è speso nel  frontend è qui che dobbiamo lavorare..
Buone notizie Ottimizzare il frontend è  facile
Risultati  certi
Molti  tool
Best practice  ben definite...
 
Riduci le Richieste HTTP Usa un  Content Delivery Network Sfrutta Gzip Metti gli Script alla Fine Aggiungi un  Expires Header Minimizza Javascript e CSS
Riduci le richieste HTTP 1 componente = 1 richiesta HTTP
Ogni richiesta HTTP occupa  tempo
M eno richieste -> più  velocità Browser Server
Riduci le richieste HTTP JS e CSS combinati
Image map
Immagini  inline  (data URI) <img src=&quot; data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7 &quot; width=&quot;16&quot; height=&quot;14&quot; alt=&quot;embedded folder icon&quot;> <?php echo base64_encode(file_get_contents(&quot;../images/folder16.gif&quot;)) ?>
Riduci le richieste HTTP CSS sprites
Riduci le richieste HTTP CSS sprites
Riduci le richieste HTTP CSS sprites
Riduci le richieste HTTP CSS sprites
Content Delivery Network CDN server browser
Content Delivery Network <script src=&quot;http://www.google.com/jsapi&quot;></script> <script> // Load jQuery google.load(&quot;jquery&quot;, &quot;1&quot;) ; //do some stuff... </script> Costoso (es. Akamai)
CDN dei poveri ;-)
Abilita Gzip Zip... Unzip... Browser Accept-econding:gzip 1 Server 2 Browser Accept-econding:gzip 4 Server Content-econding:gzip 3
Abilita Gzip 90%  dei browser supporta GZIP puoi zippare HTML, CSS, JS
Metti gli script in fondo
Metti gli script in fondo Vanno (quasi) sempre in fondo
Expire headers cache Server Browser   3 4 Browser Server Expires:Thu, 15 Apr 2019 1 2
Expires headers ~80%  delle pageview hanno una CACHE inizializzata Fonte:   http://developer.yahoo.com/performance/rules.html#expires
Expires headers Imposta  la scadenza nel futuro
Configura gli Etag Browser Server HTTP/1.1 200 OK Last-Modified: Tue.... ETag: &quot;10c24bc-4ab-457e1c1f&quot; Content-Length: 12195 1 2 Server 304 Not modified Browser If-None-Match:  &quot;10c24bc-4ab-457e1c1f&quot;   3 4
Configura gli Etag Dipendono dal server fisico
Spesso  è meglio  disabilitarli Apache ->  FileETag none

Web Performance Optimization

Editor's Notes

  • #4 Per rispondere a questa domanda vediamo alcuni dati resi pubblici da alcuni grossi player alcune settimane fa
  • #15 Vediamo il fenome un po&apos; più nel dettaglio: questo grafico rappresenta tutti i file che vengono scaricati richiedendo una particolare pagina (la hp di Y!). La lunghezza di ogni segmento blue indica il tempo impiegato per scaricare completamente il file Notiamo due cose: - come dicevamo prima ci sono tanti pezzi che compongono una pagina. Il primo ad essere scaricato è il file HTML che ovviamente contiene le informazioni per comporre tutta la pagina - La cosa più interessante però è che il tempo impiegato per scaricare il file HTMLè davvero breve rispetto a quello di tutta la pagina... 10/20% circa - Quando il server eroga il file HTML ha già fatto uery al DB, ha eseguito il codice, ecc... - chiamiamo backend...
  • #19 Se dedicassi 5 minuti a parlare di ciascuna di queste avremmo davanti un&apos;ora e dieci piuttosto noiosa... per cui ho pensato di limitarmi a 6 di queste, anche in questo caso quelle più efficienti