Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Perceived performance - Umbraco Meetup Aarhus 4/4-16

Perceived performance - Umbraco Meetup Aarhus 4/4-16

rlynggaard

April 04, 2016
Tweet

More Decks by rlynggaard

Other Decks in Programming

Transcript

  1. HVAD ER TID?  Tid kan anskues fra to vinkler

     Den faktiske tid  Den oplevede tid
  2. DEN FAKTISKE TID  Kan måles med et ur 

    Måles oftest som TTI (Time To Interact)  Gennemsnit: 5,2 sek  Kun 14% på 3 sek. eller under  Tid er penge  Firefox reducerede page load med 2,2 sek. og forøgede download med 15,4%
  3. Weber-Fechner / JND  JND – Just Noticeable Difference 

    20% reglen  Dit site loader på 8 sekunder  Du skal skære 1,6 sekund af før forbedringen overhovedet opleves af brugeren
  4. Weber-Fechner / JND  Dit site loader på 5 sekunder

     Din konkurrents loader på 2 sekunder  Ifølge JND skal du ned på 2,4 sekunder  Kunne du det, så havde du nok gjort det?
  5. CHASING THE LEADER  Hvis ens konkurrent er hurtigere 

    Geometrisk middelværdi = √(A × B)  Brugeren vil opleve en forskel, men den spiller ikke nogen rolle ved valg af service.  Hvis alt andet er lige – kvalitet, service og usability spiller en større rolle
  6. “Time is measured objectively but perceived subjectively, and experiences can

    be engineered to improve perceived performance.” Ilya Grigorik
  7. DEN OPLEVEDE TID  Den oplevede tid adskiller sig ofte

    fra den faktiske tid.  Den oplevede tid, er en blanding af mange faktorer, såsom en brugers forventninger, brugervenlighed og den faktiske tid  Aktiv eller passiv – Mennesker vil meget hellere være aktive i deres ventetid end passive.  Er man passiv i sin venten overestimerer vi ventetiden med 36%
  8. STATUSINDIKATOR  Statusindikatorer kan være rigtig gode  Statusindikatorer viser

    brugeren, at siden fungerer og deres action er registreret  Brug en spinner eller anden simpel indikator på actions, som tager mellem 1 og 5 sekunder (Bruger du en progess bar, så vil det opleves langsommere end det egentlig er)  Ved actions, som tager mere end 5 sekunder, kan der bruges en progress bar.  En statusindikator med procent, skal kun bruges på action, som tager 10 sek. eller mere.
  9. STATUSINDIKATOR - PROGRESSBAR  Progress bars som giver illusionen om

    en venstre rulning, kan forbedre den opfattede ventetid med op til 10%  Pulserende progress bars, som øger pulseringen (frekvensen), opfattes som værende hurtigere.  Progress bars, som øger hastigheden undervejs, opfattes positivt af brugerne.
  10. SKELETON SCREENS  Skeleton screens ses brugt mere og mere

     Kan med fordel bruges på sites, hvor indholdet er opbygget i et rimeligt fast grid  Load og render grid og hent så indholdet asynkront.
  11. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML
  12. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML CSS
  13. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML CSS
  14. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML CSS Fonte hentes FONT A FONT B
  15. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML CSS Fonte hentes FONT A FONT B Font A er renderet
  16. FONT LOADING 100 MS 200 MS 300 MS 400 MS

    500 MS 600 MS 700 MS HTML CSS Fonte hentes FONT A FONT B Alle fonte er renderet
  17. 600 MS 500 MS FONT LOADING 100 MS 200 MS

    300 MS 400 MS 700 MS HTML CSS Fonte hentes FONT A FONT B Alle fonte er renderet
  18. AT LADE SOM OM….  Få det til at se

    ud som om det virker – selv når det ikke gør  Reagér på en handling og udfør den senere  Brugeren klikker på ”Synes godt om”. Vi tænder knappen og kommer den handling i en kø. Når der er forbindelse og tingene virker, så kan vi gemme handlingen
  19. Forudse brugerens handling  Er der tunge operationer som kan

    startes på forhånd?  Hvis du er i gang med en upload dialog, hvor der skal udfyldes meta- data, så start upload så hurtigt som muligt – allerede inden der er klikket på submit  Ved jeg hvilken side brugeren går til næste gang?  Brug ressource hints til at hente ressourcer allerede inden de skal bruges
  20. RESOURCE HINTS Hvornår Eksempel dns-prefetch Lave tidligt DNS resolve Image

    hosts, CDNs, Analytics, 3. parts scripts preconnect Ligesom dns-prefetch, men laver også TCP handshake og TLS negotition Image hosts, CDNs, Analytics, 3. parts scripts prefetch Hente individuelle ressourcer CSS eller javascript (som måske skal bruges i fremtiden) prerender Hente og eksekvere en side På en login side, er ”logged-in” siden den næste. preloading (coming soon) Hente individuelle ressourcer CSS eller javascript (som helt sikkert skal bruges i fremtiden) <link rel=”prefetch” href=”MyFont.woff”>
  21. KNAPPER PÅ MOBILE ENHEDER  300ms ventetid ved tap –

    for at se om brugeren laver et dobbelt tap.  Ideel responstid er <=100ms  Chrome (32+) og Firefox har fjernet det delay
  22. KNAPPER PÅ MOBILE ENHEDER Vi kan snyde lidt og lade

    som om, at der sker noget med det same. Vi skal blot tilføje et active state button:active { /* Change the styling */ background-color: rgba(0,0,0,0.5); }
  23. KNAPPER PÅ MOBILE ENHEDER Nogle mobilbrowsere kræver lidt javascript for

    at få active state til at virke document.addEventListener(“touchstart”, function(){}, true);
  24. KNAPPER PÅ MOBILE ENHEDER Nogle browsere har deres egen default

    styling på active knapper. Den kan vi fjerne ved at tilføje følgende regler til knapperne -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-tap-highlight-color: transparent;
  25. KNAPPER PÅ MOBILE ENHEDER  Det fjerner ikke det 300ms

    delay, som nogle browsere har, men det vil give en bedre oplevelse for brugeren  Der er et par polyfills, som fjerner de 300ms delay  FastClick - https://github.com/ftlabs/fastclick
  26. ?