UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Matematiche Corso di Laurea in Informatica Relatore: Riccardo.

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Architettura Java/J2EE
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria “Enzo Ferrari” – Sede di Modena Corso di Laurea Specialistica in Ingegneria Informatica.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Naturali Corso di Laurea in Informatica Progetto e Sviluppo.
JUG – Ancona Italy AJAX Giovanni Baleani Developer IBS srl.
POLITECNICO DI MILANO FACOLTA’ DI INGEGNERIA SEDE DI CREMONA TESI DI DIPLOMA IN INGEGNERIA INFORMATICA RELATOREAUTORI Prof. Vittorio TrecordiDemicheli.
Obiettivo  Analisi  Progettazione  Sviluppo 2 App context-aware per la fruizione di servizi.
Dipartimento di Scienze Fisiche, Informatiche e Naturali Corso di Laurea in Informatica Progetto e sviluppo di un applicativo web per la gestione ed archiviazione.
H T M L Hyper Text Markup Language L' HTML è un linguaggio di markup usato per la creazione di documenti ipertestuali sotto forma di pagine web.
Gestione delle configurazioni Configuration management (CM) E` un processo che controlla le modifiche fatte a un sistema e gestisce le diverse versioni.
Lezione 3.  Dal menu STRUMENTI, OPZIONI INTERNET si può scrivere l’indirizzo esatto della pagina che vogliamo inserire come pagina iniziale.  Se si.
Francesca Dei Cas/Federica Pelucchi/ Gioele Besio
Musolino Carmelo Borsista del progetto di formazione NEMBO.
Corso di Web Marketing 8 Maggio – 8 Giugno 2017.
Piattaforma per la gestione di forniture basata su servizi web
Facile da usare Un'interfaccia amministrativa completamente rinnovata, iniziare con Drupal è più facile!
Visual Analytics Dashboard
HTML5 Tools Pearson
Corso per Webmaster base
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Università degli Studi di Modena e Reggio Emilia
Lato Server - OMNIS Web Web Services.
Crea il tuo sistema aziendale sul web a partire dei fogli Excel che usi. ShareXLS
PROGETTO AGRICOLTURA L’architettura tecnologica Bologna : 11/04/02.
“Lenuove tecnologie” – Lezione2
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Aggiornamento del Presentation Layer di un Web Application Framework Introduzione del Responsive Web Design nel Framework Quix Davide Setti Dipartimento.
Uso di Unity per la Creazione di Giochi Educativi
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Matematiche Corso di Laure in Informatica Relatore: Riccardo.
EasyGraph Dynamic web-based dashboard
Luogo e data di nascita Nocera Inferiore 08/06/85
Applicazione web basata su web service e web socket
REX - Istruzioni tipo IKEA
MKTG 2016.
Terza Lezione → Navigare nel file System → parte 2
LE ARCHITETTURE NON VON NEUMANN
Analysis framework of distributed thread and malware data-sources
Il Binding Nicolò Sordoni.
Sicurezza dati: Backup
Gestione Informatica della Segreteria
Paradigma MVC Ing. Buttolo Marco.
Portal Architecture Data Management
Introduzione alle griglie computazionali
Corso di Ingegneria del Web e Applicazioni A A
Job Application Monitoring (JAM)
Sviluppo web con stumenti Open
JAPS: una soluzione “Agile”
I tag essenziali.
Sviluppo di un'applicazione web per l'utilizzo del framework SparkER
Internet.
Corso di Ingegneria del Web A A Domenico Rosaci 1
RES PowerFuse® e RES WISDOM®
Progetto di Tecnologie Web 2014/2015 THERMOWEB
metodologia | software | design | cloud
Predisposizione e presentazione della domanda di nullaosta
Procedura di gestione appuntamenti tramite web.
Algoritmi e Strutture Dati
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
FULL STACK SENIOR DEVELOPER
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Free .NET Hosting - somee.com
Introduzione alla nuova versione di PowerPoint
Predisposizione e presentazione della domanda di nullaosta
Università degli studi di Modena e Reggio Emilia
Dipartimento di Scienze Fisiche, Informatiche e Matematiche Corso di Laurea in Informatica Progettazione e implementazione di un applicativo di raccolta.
UNIVERSITÀ DI MODENA E REGGIO EMILIA
Corso di Laurea in Farmacia Dipartimento di Scienze del Farmaco
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Dipartimento di Scienze Fisiche, Informatiche e Matematiche Corso di Laurea in Informatica Relatore: Riccardo Martoglia Candidato: Francesco Nicoli Anno Accademico 2015/2016 Progetto e Sviluppo dell’item gallery di mobile.yoox.com, con tecnologia AngularJS

Introduzione  Il sito web mobile.yoox.com  Attività di tirocinio: re-ingegnerizzazione di mobile.yoox.com tramite web-page rendering a livello di client  Il sito web mobile.yoox.com  Attività di tirocinio: re-ingegnerizzazione di mobile.yoox.com tramite web-page rendering a livello di client

Problematiche affrontate e obiettivi Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance Obiettivi  Migliorare la velocità di navigazione dell’item gallery

Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance

Ciclo di vita di una richiesta web per mobile.yoox.com (soluzione server-side)

Ciclo di vita di una richiesta web per mobile.yoox.com (soluzione client-side)

Ciclo di vita di una richiesta web per mobile.yoox.com (soluzione client-side) (2) Il file JSON utilizzato nella soluzione server-side contiene molti dati riservati alla SEO, di nessun valore per il web-page rendering, per questo sono stati eliminati un peso minore del file JSON che viene inviato al client Il file JSON utilizzato nella soluzione server-side contiene molti dati riservati alla SEO, di nessun valore per il web-page rendering, per questo sono stati eliminati un peso minore del file JSON che viene inviato al client

Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance

Infinite Scrolling & Lazy Loading o La navigazione dell’item gallery avviene per scrolling verso il basso o 20 nuovi oggetti vengono caricati quando si raggiunge la fine della pagina

Infinite Scrolling & Lazy Loading (2) CDN client oggetti richiesta oggetti Una chiamata AJAX Una fase di attesa Un file in risposta

Infinite Scrolling & Lazy loading (3): pre-caricamento Micro-attesa di caricamento per la pagina successiva Pre-caricamento del file JSON per la pagina successiva

Infinite Scrolling & Lazy loading (3): pre-caricamento (2) CDN client oggetti di PAGE=X richiesta oggetti per PAGE=X Una chiamata AJAX Una fase di attesa Un file in risposta l’utente si trova su PAGE=X, richiesta per JSON di PAGE=X

Infinite Scrolling & Lazy loading (3): pre-caricamento (3) CDN client richiesta oggetti per PAGE=X+1 Una chiamata AJAX Una fase di attesa l’utente si trova su PAGE=X, richiesta per JSON di PAGE=X+1

Infinite Scrolling & Lazy loading (3): pre-caricamento (4) CDN client richiesta oggetti per PAGE=X+2 Una chiamata AJAX Una fase di attesa l’utente si trova su PAGE=X+1, richiesta per JSON di PAGE=X+2 oggetti di PAGE=X+1 Un file in risposta

Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance

Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ del browser Pagina 1 della navigazionePagina 10 della navigazione Pagina 1 della navigazione

Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ del browser Pagina 1 della navigazionePagina 10 della navigazione Pagina 10 della navigazione Si imposta un parametro #/page=numpage unico per ogni pagina

Memorizzazione dello stato di navigazione (2): funzionalità bottone ‘indietro’ del browser Pagina 1 della navigazione

Memorizzazione dello stato di navigazione (2): funzionalità bottone ‘indietro’ del browser Pagina 10 della navigazione Pagina precedente nella cronologia degli URL visitati: Google

Memorizzazione dello stato di navigazione (3): funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser URL rewriting con #/page=numpage

Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance

Il template Razor

Il template AngularJS o La home di mobile.yoox.com è sempre servita dalla CDN o Template Razor + Template AngularJS

Problematiche affrontate  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance  Ciclo di vita di una richiesta web per mobile.yoox.com  Infinite Scrolling & Lazy Loading  Memorizzazione dello stato di navigazione: funzionalità ‘segnalibro’ e bottone ‘indietro’ del browser  Implementazione della soluzione client-side  Analisi delle performance

Analisi delle performance: ambiente locale  Performance: KB di dati in download e tempi di risposta  Pannello ‘Strumenti per sviluppatori’ di Chrome  Pulizia della cache prima dei test server-side e client-side  Performance: KB di dati in download e tempi di risposta  Pannello ‘Strumenti per sviluppatori’ di Chrome  Pulizia della cache prima dei test server-side e client-side

Analisi delle performance (2): server-side Vs client-side Server-side  20 pagine web caricate tramite Infinite Scrolling: nessun uso di cache, CDN e compressione dati Client-side  Le stesse 20 pagine web caricate tramite Infinite Scrolling: nessun uso di cache, CDN e compressione dati SOMMA (time): 25,9 s – 20,2 s = + 5,7 secondi SOMMA (size): 614,2 KB – 287,5 KB = KB MEDIA (time): 1,3 s – 0,92 s = + 0,38 secondi MEDIA (size): 30,7 KB – 13,7 KB = + 17 KB

Conclusioni e prossimi sviluppi Conclusioni  L’obiettivo di migliorare le performance della soluzione client-side è stato raggiunto in ambiente locale (–0,4s di caricamento per pagina)  La soluzione server-side online serve pagine web di peso pari a 3KB; i tempi di risposta variano da 400ms a 700ms Prossimi sviluppi  Testing  AngularJS 2  Sviluppo navigazione offline

Icons made by Freepik from Icons made by Lyolya from Icons made by Madebyoliver from Icons made by Alessio Atzeni from

Analisi delle performance: WebPagetest o Inaffidabile: tempi di risposta fino a 25 secondi o La cache del device remoto non viene pulita o Impossibile testare SPA

SEO e rendering client-side di pagine web 1.Il crawler dei motori di ricerca vede solo il template 2.Il crawler non può indicizzare le pagine 3.Schema di AJAX crawling: server-side rendering per il crawler, client-side rendering per gli utenti 1.Il crawler dei motori di ricerca vede solo il template 2.Il crawler non può indicizzare le pagine 3.Schema di AJAX crawling: server-side rendering per il crawler, client-side rendering per gli utenti

I filtri di ricerca

Miglioramenti (2): espressioni AngularJS o ng-bind invece di {{ }} o One-time binding (simbolo ::) 7 (bindings) x 20 (oggetti per pagina) = 140 (bindings per pagina) 2000/ 140 = 14

Conclusioni: giudizio sul framework AngularJS  Il framework con la curva di apprendimento più ripida  Documentazione scritta male  Two-way data binding attivo di default e quasi mai utilizzato  AngularJS 2 non retro-compatibile  Popolarità tra le ricerche Google mal motivata  Il framework con la curva di apprendimento più ripida  Documentazione scritta male  Two-way data binding attivo di default e quasi mai utilizzato  AngularJS 2 non retro-compatibile  Popolarità tra le ricerche Google mal motivata

Perché web page rendering client-side Server-side  Il contenuto di una pagina web è visibile ai motori di ricerca  Nessuna ‘pagina bianca’ nell’attesa che il contenuto venga renderizzato  Non esistono problemi di compatibilità con i browser (vendor e versioni)  Un server ha capacità computazionale molto più elevata  Intere pagine web servite da cache (server o CDN) Client-side  I server inviano solo i dati e sono più veloci a completare le richieste web dei client  La pagina può essere divisa in viste che vengono modificate ‘on the fly’ dalla logica JS  Particolarmente utile per UI dove l’interazione con l’utente modifica l’aspetto della pagina web  I dati possono essere rappresentati in modo differente, senza ulteriori richieste web

Il design pattern MVC  View: HTML + template + CSS + JS + dati  Model: gestisce i dati e la business logic  Controller: prende in gestione le richieste provenienti dalla View e le inoltra al Model  View: HTML + template + CSS + JS + dati  Model: gestisce i dati e la business logic  Controller: prende in gestione le richieste provenienti dalla View e le inoltra al Model

URL & Navigazione Window.onhashchange Server-sideClient-side URL rewriting salvare un URL come segnalibro; far funzionare il bottone “indietro” in un SPA.

AngularJS, Backbone, Ember AngularJS  Community  Two-way data binding  Dirty checking  Supportato da Google  Validazione dei form  Filtri Ember  Data layer integrato  Tempi di configurazione minimi  ‘Run Loop’ più efficiente del Digest Cycle di AngularJS  Dimensioni in KB  Curva di apprendimento lineare  Buona documentazione  Libertà di scelta di componenti di terze parti  Performance  Dimensioni in KB  Curva di apprendimento lineare  Buona documentazione  Libertà di scelta di componenti di terze parti  Performance Backbone

I vantaggi di un framework JavaScript (client- side)  Client-side web page rendering  Codice riusabile, mantenibile, strutturato, testabile  Modularità e Lazy Loading  SPA  Design pattern MVC  Client-side web page rendering  Codice riusabile, mantenibile, strutturato, testabile  Modularità e Lazy Loading  SPA  Design pattern MVC

Il template AngularJS e le Direttive

Tecnologie per la soluzione server-side  RESTful Web Service  JSON  Razor  CDN  RESTful Web Service  JSON  Razor  CDN