SlideShare a Scribd company logo
Corso WebApp iOS
             “Optimize iOS WebApps”
                                Lezione 08/10

”Perfection is Achieved not when there is nothing more
to add, but when there is nothing more to take away ”
  Antoine de Saint-Exupéry
   French Writer and Aviator.
Chapter 10
Optimize iOS WebApps




  http://www.apress.com/9781430232469
Diario Lezioni
        LEZIONE 08

   iOS WebApp Anatomy
  Performance Optimization
    Usability Optimization
       Offline WebApp
         Mobile SEO
Performance Opt.
Code Optimization
                 Regola 01

 usare codice complain allo standard W3C

         es: stylsheet nel <head>
      es: Javascript* prima </body>




     * altrimenti può bloccare HTTP request
Code Optimization
                Regola 02

          scrivere codice snello

 es: no espressioni CSS se non necessarie
   es: commenti significativi ma concisi
          es: usare GZip o Minify
Code Optimization
         Regola 03

    ridurre richieste HTTP
Code Optimization
Code Optimization
             Regola 04

   combinare file CSS e Javascript
Code Optimization
Code Optimization
               Regola 05

           minimizzare DOM

      es: numero di accessi al DOM
  es: numero di oggetti DOM da gestire
Image Optimization
               Regola 06

        ottimizzare il color depth

         es: png8, png16, png32
  es: rimuovere metadata dall’immagine
Image Optimization
         Regola 07

      usare CSS Sprite
Image Optimization
Image Optimization
   Sprite Technique (from iWebKit)

    input[type="checkbox"] {
    width: 94px;
    height: 27px;
    background: url('../images/checkbox.png');
    -webkit-appearance: none;
    border: 0;
    float: right;
    margin: 8px 4px 0 0;
    }

    input[type="checkbox"]:checked {
    background-position: 0 27px;
    }
Image Optimization
               Regola 08

     usare CSS al posto di immagini

   es: gradienti o generici background
           es: rounded corners
Image Optimization
                  Regola 09

         mai usare immagini scalate

 es: eccezione portrait-landscape relationship
Diario Lezioni
        LEZIONE 08

   iOS WebApp Anatomy
  Performance Optimization
    Usability Optimization
       Offline WebApp
         Mobile SEO
Usability Optimization
Usability Optimization
   Esempio di Test basato su Paper Prototype

           1.   Scegliere il Contesto
           2.   Creare un Caso d’Uso
           3.   Preparare gli Assets
           4.   Scegliere gli Utenti
           5.   Eseguire il Test
           6.   Esaminare il Test
           7.   Valutare il Test
           8.   Creare Linee Guida
Diario Lezioni
        LEZIONE 08

   iOS WebApp Anatomy
  Performance Optimization
    Usability Optimization
       Offline WebApp
         Mobile SEO
Offline WebApp
          Cache Manifest

          HTML5 feature

  semplice file di testo .manifest
Offline WebApp
          Cache Manifest

 1. Definire il File Cache Manifest
 2. Linkare il file Cache Manifest
 3. Cofigurare il Server
Offline WebApp
          Cache Manifest

         CHACHE MANIFEST
       cache manifest header

                CACHE
 risorse caricate sempre dalla cache
Offline WebApp
           Cache Manifest

               NETWORK
  risorse caricate sempre dal server

                FALLBACK
     risorse usate come rimpiazzo
per risorse che non sono state caricate
      (es: errore dovuto al server)
Offline WebApp
       Cache Manifest

     CHACHE MANIFEST
   cache manifest header

   unica parte obbligatoria
Offline WebApp
  Cache Manifest (Definire il File)

        CACHE MANIFEST
        CACHE
        # Comment on Cache Rule Files
        file01
        file02
        fileN
        NETORK
        # Comment on Network Rule Files
        file01
        file02
        fileN
        FALLBACK
        # Comment on Cache Rule Files
        file01
        file02
        fileN
Offline WebApp
                   Cache Manifest

  commenti usati per marcare la versione della cache
perché il file viene aggiornato quando viene modificato

    possibile aggiornamento forzato via Javascript
Offline WebApp
  Cache Manifest (Definire il File)

        CACHE MANIFEST

        # WebApp Images inside the pic folder
        http://www.thestore.com/images

        # WebApp Images inside the images folder
        http://www.thestore.com/images
Offline WebApp
      Cache Manifest (Linkare il File)

<html manifest="cache-iphone.manifest">

   in tutte le pagine da mandare offline
Offline WebApp
  Cache Manifest (Configurare il Server)

 AddType text/cache-manifest .manifest

nel file .htaccess nella root del web server
Offline WebApp
                       Cache Manifest

se fallisce il download del file manifest (o di una sua risorsa)
         tutto il download/upload della cache fallisce
Offline WebApp
           Cache Manifest (via Javascript)

la gestione via Javascript é più affidabile ed accurata

         si usa i metodi esposti dall’oggetto
              window.applicationCache
Offline WebApp
   Cache Manifest (via Javascript)

 1. Test: Old Cache pronta
 2. Update: Nuova Cache
 3. Swap: Old Cache con New Cache
Offline WebApp
                   Cache Manifest (via Javascript)

  window.applicationCache.UNCACHED     0        Cache is Not Available

     window.applicationCache.IDLE      1         Cache is Up to Date

  window.applicationCache.CHECKING     2   Manifest File Checked for Update

window.applicationCache.DOWNLOADING    3    Downloading the New Cache

 window.applicationCache.UPDATEREADY   4   New Cache Ready to be Updated

  window.applicationCache.OBSOLETE     5   Cache Deleted because Obsolete
Offline WebApp
   Cache Manifest (via Javascript)

     durante l’update della cache
alcuni eventi sono inviati alla WebApp
 per monitorare lo stato del processo
       e reagire di conseguenza
Offline WebApp
                Cache Manifest (via Javascript)
                                    The browser is attempting to download the manifest for the first time
 checking
                                               or is checking whether an update is available

 noupdate                                             The manifest hasn’t been changed

                 The download of resources listed in the manifest has begun, either to gather the resources for the first time
downloading
                                                          or to update the cache

 progress                              The browser is downloading the resources listed in the manifest

                The resources listed in the manifest have all been downloaded, and the application is now available from cache.
  cached
                                                      This is sent only on first download

updateready                            The resources form the cache have all been downloaded anew

                               The manifest is no longer available, and the server has sent a 404 or 410 status.
 obsolete
                                    The cache will be deleted the next time the pplication is launched

   error                                     The manifest has not been found or contains errors
Offline WebApp
            Cache Manifest (via Javascript)

window.applicationCache.onupdateready = doSomethingHandler;
Offline WebApp
               Cache Manifest (via Javascript)

gli eventi possono essere registrati usando i metodi del DOM
       o usando i metodi dell’oggetto ApplicationCache
Offline WebApp
                     Cache Manifest (via Javascript)

if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
    do something here
}
Offline WebApp
           Cache Manifest (via Javascript)

la gestione via Javascript é più affidabile ed accurata

         si usa i metodi esposti dall’oggetto
              window.applicationCache
Offline WebApp
      Cache Manifest (via Javascript)

quando testiamo lo stato col metodo .status

    si usa i metodi esposti dall’oggetto
         window.applicationCache
Diario Lezioni
        LEZIONE 08

   iOS WebApp Anatomy
  Performance Optimization
    Usability Optimization
       Offline WebApp
         Mobile SEO
Mobile SEO
Mobile SEO
                       Domain Name

http://iphone.thestore.com   /* Third Level Domain Name */
http://ipad.thestore.com     /* Third Level Domain Name */
Mobile SEO
                                Page Title

<title>The Store</title>                       /* Store Index Page Title */
<title>The Store (U.S.)</title>                /* US Home Page Title */
<title>The Store (U.S.) | Contact Us</title>   /* US Contacts Page Title */
Mobile SEO
                            Meta Tags

<meta name="Keywords" content="Apple" /> /* Page Keywords Metatag */
Mobile SEO
                         Content

            The Page Header (Primary Keyword)
          The Page Tagline (Secondary Keyword)
    The Page Content (Primary and Secondary Keyword)
The Page Links (Primary Keyword, only wherever is possible)
Mobile SEO
             Content

         approccio facilitato
dalla prioritizzazione dei contenuti
    effettuati nelle versioni iOS
Mobile SEO
Mobile SEO
                           Links

           inbound link: ha un peso per il SE
          outbound link: ha un peso per il SE

internal link: facilita “solamente” il lavoro dei crawler*




          * Google é un crawler-baser search engine
Mobile SEO
                     Images

<a href="#"><img src="pics/hero_iphone4.png"
alt="The New iPhone4"/></a>

   informazioni extra tramite attributo “title”
Mobile SEO
                         Javascript

<script src="javascript/functions.js" type="text/javascript">
</script>

             codice Javascript non é SE friendly
Mobile SEO
              SEO Tools

          Google Analitics

     gratuito ma non in real-time
dati disponibili ogni giorni alle 00:00
Esercitazione
 Utilizzare Guida* di Riferimento
   del Framework e Javascript

1. Implementare le Funzioni Specifiche
2. Implementare la Logica della Dinamica




* versione online e/o formato elettronico
PROSSIMA LEZIONE
         LEGGERE

   Mobile User eXperience
     Test di Usabilità

More Related Content

PPTX
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
PDF
Hands on MVC - Mastering the Web
TXT
Link. java server faces [santi caltabiano]
PDF
SPRING - MAVEN - REST API (ITA - Luglio 2017)
PPTX
Asp.net 4 Community Tour VS2010
PPTX
人类行为与最大熵原理
PPTX
Come sviluppare applicazioni cross device con HTML
PDF
Html5 e PHP
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Hands on MVC - Mastering the Web
Link. java server faces [santi caltabiano]
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Asp.net 4 Community Tour VS2010
人类行为与最大熵原理
Come sviluppare applicazioni cross device con HTML
Html5 e PHP

Similar to Corso WebApp iOS - Lezione 08: Optimize iOS WebApp (20)

PDF
UI/UX l' approccio giusto ad un progetto.
PPTX
WordCamp Catania 2019 PWA e TWA
PPTX
Contracts & Extensions: allargare i confini della propria applicazione (Win8@...
PPTX
Webperformance, come ottimizzare il tempo di caricamento di una pagina web!
PPTX
Introduzione - Web design
PDF
Acadevmy - PWA & Angular
PDF
Smau milano 2012 arena social media davide-senatore
PDF
Aperinfo maggio-2012 - Mobile
PDF
Mobile App o Mobile Web? Quale scelta per il mio business?
PDF
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
PDF
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
PDF
App vs Mobile website: quale lo scenario vincente?
PDF
Strategie per applicazioni web prima o meglio dell'app nativa
PDF
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
PDF
Acadevmy - PWA Overview
PDF
Creare PWA con Angular
PDF
Lean UX Development
PDF
Lean UX Development - Approach and toolkit - Fabbrucci
PPTX
10 aspetti SEO da non trascurare mai in un E-commerce
PDF
Ergonomia e commercio - facoltà di vendere online
UI/UX l' approccio giusto ad un progetto.
WordCamp Catania 2019 PWA e TWA
Contracts & Extensions: allargare i confini della propria applicazione (Win8@...
Webperformance, come ottimizzare il tempo di caricamento di una pagina web!
Introduzione - Web design
Acadevmy - PWA & Angular
Smau milano 2012 arena social media davide-senatore
Aperinfo maggio-2012 - Mobile
Mobile App o Mobile Web? Quale scelta per il mio business?
B com 2014 | Mobile App o Mobile Web? Qual è la soluzione migliore per il tuo...
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
App vs Mobile website: quale lo scenario vincente?
Strategie per applicazioni web prima o meglio dell'app nativa
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
Acadevmy - PWA Overview
Creare PWA con Angular
Lean UX Development
Lean UX Development - Approach and toolkit - Fabbrucci
10 aspetti SEO da non trascurare mai in un E-commerce
Ergonomia e commercio - facoltà di vendere online
Ad

More from Andrea Picchi (20)

PDF
The New Retail Paradigm: How the Psychological Foundation of Consumer Behavio...
PDF
The 3 Dimensions of Design: A Model to scale the Human-Centered Problem-Solvi...
PDF
The Evolution of Design Thinking: Shifting from a Product and Service to a Re...
PDF
Continuous Innovation: Going beyond Agile, Lean, and Design Thinking toward a...
PDF
The 3 Dimensions of Design: Scaling a Human-Centered Practice across the Orga...
PDF
Beyond Design Thinking the 3 Dimension of a Design-Driven Company.
PDF
Embedding Design Thinking at Sony to accomplish Business Strategy
PDF
How a Design-Driven Company can Multiply its Business Value
PDF
The Evolution of Business Strategy: How to use Design Thinking to uncover hid...
PDF
Mobile and Wearable Technologies in the Travel Industry
PDF
A Cognitive Approach to Ecosystem Design
PDF
Introduction to Agile Scrum
PDF
Designing the User Experience
PDF
Variabili Cognitive dell'Esperienza Utente
PDF
Ottimizzazione Cognitiva di Contesti Mobile Touch
PDF
Analisi e Tecniche di Design Cognitivo per Contesti Mobile Touch
PDF
Ottimizzazione e Analisi Cognitiva di Contesti Mobile Touch
PDF
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
PDF
Corso WebApp iOS - Lezione 07: iOS WebApp Anatomy
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
The New Retail Paradigm: How the Psychological Foundation of Consumer Behavio...
The 3 Dimensions of Design: A Model to scale the Human-Centered Problem-Solvi...
The Evolution of Design Thinking: Shifting from a Product and Service to a Re...
Continuous Innovation: Going beyond Agile, Lean, and Design Thinking toward a...
The 3 Dimensions of Design: Scaling a Human-Centered Practice across the Orga...
Beyond Design Thinking the 3 Dimension of a Design-Driven Company.
Embedding Design Thinking at Sony to accomplish Business Strategy
How a Design-Driven Company can Multiply its Business Value
The Evolution of Business Strategy: How to use Design Thinking to uncover hid...
Mobile and Wearable Technologies in the Travel Industry
A Cognitive Approach to Ecosystem Design
Introduction to Agile Scrum
Designing the User Experience
Variabili Cognitive dell'Esperienza Utente
Ottimizzazione Cognitiva di Contesti Mobile Touch
Analisi e Tecniche di Design Cognitivo per Contesti Mobile Touch
Ottimizzazione e Analisi Cognitiva di Contesti Mobile Touch
Corso WebApp iOS - Lezione 09: Testing iOS WebApp
Corso WebApp iOS - Lezione 07: iOS WebApp Anatomy
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Ad

Corso WebApp iOS - Lezione 08: Optimize iOS WebApp

  • 1. Corso WebApp iOS “Optimize iOS WebApps” Lezione 08/10 ”Perfection is Achieved not when there is nothing more to add, but when there is nothing more to take away ” Antoine de Saint-Exupéry French Writer and Aviator.
  • 2. Chapter 10 Optimize iOS WebApps http://www.apress.com/9781430232469
  • 3. Diario Lezioni LEZIONE 08 iOS WebApp Anatomy Performance Optimization Usability Optimization Offline WebApp Mobile SEO
  • 5. Code Optimization Regola 01 usare codice complain allo standard W3C es: stylsheet nel <head> es: Javascript* prima </body> * altrimenti può bloccare HTTP request
  • 6. Code Optimization Regola 02 scrivere codice snello es: no espressioni CSS se non necessarie es: commenti significativi ma concisi es: usare GZip o Minify
  • 7. Code Optimization Regola 03 ridurre richieste HTTP
  • 9. Code Optimization Regola 04 combinare file CSS e Javascript
  • 11. Code Optimization Regola 05 minimizzare DOM es: numero di accessi al DOM es: numero di oggetti DOM da gestire
  • 12. Image Optimization Regola 06 ottimizzare il color depth es: png8, png16, png32 es: rimuovere metadata dall’immagine
  • 13. Image Optimization Regola 07 usare CSS Sprite
  • 15. Image Optimization Sprite Technique (from iWebKit) input[type="checkbox"] { width: 94px; height: 27px; background: url('../images/checkbox.png'); -webkit-appearance: none; border: 0; float: right; margin: 8px 4px 0 0; } input[type="checkbox"]:checked { background-position: 0 27px; }
  • 16. Image Optimization Regola 08 usare CSS al posto di immagini es: gradienti o generici background es: rounded corners
  • 17. Image Optimization Regola 09 mai usare immagini scalate es: eccezione portrait-landscape relationship
  • 18. Diario Lezioni LEZIONE 08 iOS WebApp Anatomy Performance Optimization Usability Optimization Offline WebApp Mobile SEO
  • 20. Usability Optimization Esempio di Test basato su Paper Prototype 1. Scegliere il Contesto 2. Creare un Caso d’Uso 3. Preparare gli Assets 4. Scegliere gli Utenti 5. Eseguire il Test 6. Esaminare il Test 7. Valutare il Test 8. Creare Linee Guida
  • 21. Diario Lezioni LEZIONE 08 iOS WebApp Anatomy Performance Optimization Usability Optimization Offline WebApp Mobile SEO
  • 22. Offline WebApp Cache Manifest HTML5 feature semplice file di testo .manifest
  • 23. Offline WebApp Cache Manifest 1. Definire il File Cache Manifest 2. Linkare il file Cache Manifest 3. Cofigurare il Server
  • 24. Offline WebApp Cache Manifest CHACHE MANIFEST cache manifest header CACHE risorse caricate sempre dalla cache
  • 25. Offline WebApp Cache Manifest NETWORK risorse caricate sempre dal server FALLBACK risorse usate come rimpiazzo per risorse che non sono state caricate (es: errore dovuto al server)
  • 26. Offline WebApp Cache Manifest CHACHE MANIFEST cache manifest header unica parte obbligatoria
  • 27. Offline WebApp Cache Manifest (Definire il File) CACHE MANIFEST CACHE # Comment on Cache Rule Files file01 file02 fileN NETORK # Comment on Network Rule Files file01 file02 fileN FALLBACK # Comment on Cache Rule Files file01 file02 fileN
  • 28. Offline WebApp Cache Manifest commenti usati per marcare la versione della cache perché il file viene aggiornato quando viene modificato possibile aggiornamento forzato via Javascript
  • 29. Offline WebApp Cache Manifest (Definire il File) CACHE MANIFEST # WebApp Images inside the pic folder http://www.thestore.com/images # WebApp Images inside the images folder http://www.thestore.com/images
  • 30. Offline WebApp Cache Manifest (Linkare il File) <html manifest="cache-iphone.manifest"> in tutte le pagine da mandare offline
  • 31. Offline WebApp Cache Manifest (Configurare il Server) AddType text/cache-manifest .manifest nel file .htaccess nella root del web server
  • 32. Offline WebApp Cache Manifest se fallisce il download del file manifest (o di una sua risorsa) tutto il download/upload della cache fallisce
  • 33. Offline WebApp Cache Manifest (via Javascript) la gestione via Javascript é più affidabile ed accurata si usa i metodi esposti dall’oggetto window.applicationCache
  • 34. Offline WebApp Cache Manifest (via Javascript) 1. Test: Old Cache pronta 2. Update: Nuova Cache 3. Swap: Old Cache con New Cache
  • 35. Offline WebApp Cache Manifest (via Javascript) window.applicationCache.UNCACHED 0 Cache is Not Available window.applicationCache.IDLE 1 Cache is Up to Date window.applicationCache.CHECKING 2 Manifest File Checked for Update window.applicationCache.DOWNLOADING 3 Downloading the New Cache window.applicationCache.UPDATEREADY 4 New Cache Ready to be Updated window.applicationCache.OBSOLETE 5 Cache Deleted because Obsolete
  • 36. Offline WebApp Cache Manifest (via Javascript) durante l’update della cache alcuni eventi sono inviati alla WebApp per monitorare lo stato del processo e reagire di conseguenza
  • 37. Offline WebApp Cache Manifest (via Javascript) The browser is attempting to download the manifest for the first time checking or is checking whether an update is available noupdate The manifest hasn’t been changed The download of resources listed in the manifest has begun, either to gather the resources for the first time downloading or to update the cache progress The browser is downloading the resources listed in the manifest The resources listed in the manifest have all been downloaded, and the application is now available from cache. cached This is sent only on first download updateready The resources form the cache have all been downloaded anew The manifest is no longer available, and the server has sent a 404 or 410 status. obsolete The cache will be deleted the next time the pplication is launched error The manifest has not been found or contains errors
  • 38. Offline WebApp Cache Manifest (via Javascript) window.applicationCache.onupdateready = doSomethingHandler;
  • 39. Offline WebApp Cache Manifest (via Javascript) gli eventi possono essere registrati usando i metodi del DOM o usando i metodi dell’oggetto ApplicationCache
  • 40. Offline WebApp Cache Manifest (via Javascript) if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { do something here }
  • 41. Offline WebApp Cache Manifest (via Javascript) la gestione via Javascript é più affidabile ed accurata si usa i metodi esposti dall’oggetto window.applicationCache
  • 42. Offline WebApp Cache Manifest (via Javascript) quando testiamo lo stato col metodo .status si usa i metodi esposti dall’oggetto window.applicationCache
  • 43. Diario Lezioni LEZIONE 08 iOS WebApp Anatomy Performance Optimization Usability Optimization Offline WebApp Mobile SEO
  • 45. Mobile SEO Domain Name http://iphone.thestore.com /* Third Level Domain Name */ http://ipad.thestore.com /* Third Level Domain Name */
  • 46. Mobile SEO Page Title <title>The Store</title> /* Store Index Page Title */ <title>The Store (U.S.)</title> /* US Home Page Title */ <title>The Store (U.S.) | Contact Us</title> /* US Contacts Page Title */
  • 47. Mobile SEO Meta Tags <meta name="Keywords" content="Apple" /> /* Page Keywords Metatag */
  • 48. Mobile SEO Content The Page Header (Primary Keyword) The Page Tagline (Secondary Keyword) The Page Content (Primary and Secondary Keyword) The Page Links (Primary Keyword, only wherever is possible)
  • 49. Mobile SEO Content approccio facilitato dalla prioritizzazione dei contenuti effettuati nelle versioni iOS
  • 51. Mobile SEO Links inbound link: ha un peso per il SE outbound link: ha un peso per il SE internal link: facilita “solamente” il lavoro dei crawler* * Google é un crawler-baser search engine
  • 52. Mobile SEO Images <a href="#"><img src="pics/hero_iphone4.png" alt="The New iPhone4"/></a> informazioni extra tramite attributo “title”
  • 53. Mobile SEO Javascript <script src="javascript/functions.js" type="text/javascript"> </script> codice Javascript non é SE friendly
  • 54. Mobile SEO SEO Tools Google Analitics gratuito ma non in real-time dati disponibili ogni giorni alle 00:00
  • 55. Esercitazione Utilizzare Guida* di Riferimento del Framework e Javascript 1. Implementare le Funzioni Specifiche 2. Implementare la Logica della Dinamica * versione online e/o formato elettronico
  • 56. PROSSIMA LEZIONE LEGGERE Mobile User eXperience Test di Usabilità