6. Facebook abbandona HTML5
Perché?
Cosa non ha funzionato?
E’ tutta colpa di HTML5?
Quante persone ha licenziato?
Is HTML5 too slow for Facebook?
http://www.codefessions.com/2012_08_01_archive.html
45. Embedding
PRO CONTRO
Ottimo per i first time users Non utilizzabile su elementi dinamici
(o forse no?)
Riduzione numero di richieste No cache
Distinguere tra file fissi e dinamici No CDN
Pensare bene a cosa poter caricare dopo Non è consigliabile embeddare troppi file
per snellire la pagina creando pagine complete >100KB
La cache de browser è cancellata su iPhone 4 (e precedenti) quando spento
46. Velocità di download
Quale libreria
Minification YUI compressor
Gzip Compression Documentazione del server!!!
Embedding Jsoup per Java, Jquery per NodeJs
47. App HTML5 superveloci
Velocità di download
Velocità di comunicazione client/server
Velocità hardware
Considerazioni generali
Oltre il codice
57. Server + DB
Server
+ DB
Client Comunicazione Server
58. Server + DB
Server
+ DB
Client Comunicazione Server
Tempo di elaborazione server + DB
59. Server + DB
Server
+ DB
Client Comunicazione Server
1
2
60. Server + DB
Server
+ DB
Client Comunicazione Server
1
2
61. Server + DB
• Un server che non allochi un thread per
ogni utente
62. Server + DB
• Un server che non allochi un thread per
ogni utente
• NodeJS se volete usare Javascript Server
Side
• Vert.x se volete usare Java, Ruby, Groovy,
Javascript, Scala, Xtend
64. Server + DB
<p>Hello World</p>
1000000 richieste, 20000 concorrenti
Richieste
fallite
65. Server + DB
<p>Hello World</p>
1000000 richieste, 20000 concorrenti
Richieste al
secondo
http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
72. WebSockets / SPDY
• Bassa latenza (non si trasmette l’header)
• Full duplex
• La connessione dura a lungo
• Ideale per notifiche Push
• Il processing time è molto minore
http://www.youtube.com/watch?v=Z897fkPn7Rw
• Crea una connessione su un’altra porta
73. WebSockets / SPDY
• Non utilizzateli ‘nativamente’, ma fate
riferimento a librerie che li utilizzano se
possibile, altrimenti si servono del classico
Ajax
78. App HTML5 superveloci
Velocità di download
Velocità di comunicazione client/server
Velocità hardware
Considerazioni generali
Oltre il codice
94. Velocità hardware
Perché .animate è troppo lento
Animazioni Usate le transition3d CSS3
Canvas Ha prestazioni paragonabili a OpenGL
95. App HTML5 superveloci
Velocità di download
Velocità di comunicazione client/server
Velocità hardware
Considerazioni generali
Oltre il codice
97. Responsive layouts
• Immagini fisse
• Immagini di contenuto
• Le giuste immagini per il device
– 2x (high density devices)
– 1x
– Thumbs
– Don't Scale Images in HTML
98. Richieste statiche
• Minimizza i cookie inviati al server
• Usa lo storage server-side o client-side
per salvare le info dell’utente
• Per le richieste statiche utilizza un
sottodominio che non si serve dei
cookie
99. Manipolazione DOM
• Salvate i riferimenti agli elementi che
accedete con $(…)
• Aggiornate i nodi “offline” e solo alla fine
aggiungeteli al DOM
• Utilizzate CSS per il layout e non
JavaScript
101. Web Workers
• E’ come un Thread: non blocca l’interfaccia
grafica
var worker = new Worker(“async.js")
worker.postMessage(“message")
worker.onmessage = function(event)
{… event.data …}
worker.terminate()
104. App HTML5 superveloci
Velocità di download
Velocità di comunicazione client/server
Velocità hardware
Considerazioni generali
Oltre il codice
115. App HTML5 superveloci
Velocità di download
Velocità di comunicazione client/server
Velocità hardware
Considerazioni generali
Oltre il codice
116. Misurare la velocità
Chrome Web Tools
Chrome Page Speed
https://developers.google.com/speed/pagespeed/
Chrome FPS Counter
about:flag
Adobe Edge Inspect
Javascript