Anzeige
Anzeige

Más contenido relacionado

Similar a HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)(20)

Anzeige
Anzeige

HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)

  1. HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg) André Krämer Softwareentwickler, Trainer, Berater
  2. Warum ist JavaScript langsam? Foto: © pkruger | istockphoto.com
  3. Ist es nicht! Chakra, V8 & Co sind rasend schnell! Foto: © Rostislav Sedlacek | Fotolia.com
  4. Zusammenfassung • Moderne JavaScript Engines sind sehr performant • Die Laufzeitgeschwindigkeit von JavaScript ist heute kein Problem mehr
  5. Homepage andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer Vielen Dank! Blog Xing Facebook Twitter Google+ 6
  6. Nicht so schnell ....
  7. Nutzer von Webanwendungen … Foto: © Romolo Tavani | Fotolia.com
  8. Warum sind Webanwendungen langsam? Foto: © pkruger | istockphoto.com
  9. Wann ist eine Webanwendung „langsam“? • Zu viel JavaScript? • Komplexes CSS? • Komplexes DOM? • DOM Manipulation? • Ajax? • IE6 • ...
  10. Langsam aus Sicht des Anwenders Foto: © Shakzu | Fotolia.com
  11. Antwortzeiten nach Jakob Nielsen • 0 – 100 ms: Das System antwortet unverzüglich  Ich habe etwas gemacht • 101 ms – 1000 ms: Benutzer bemerkt Verzögerung, bleibt im Fluss  Ich habe dem Computer befohlen etwas zu machen • 1 s – 10 s: Der Benutzer fokussiert sich noch auf die Aufgabe • > 10 Sekunden: Der Anwender bricht die Aufgabe ab • Zusatzinfo: Animationen auf dem Bildschirm werden bei 60 Frames pro Sekunde als flüssig wahrgenommen (1 Frame = 1000/60 = 16,6666 ms) Angelehnt an: https://www.nngroup.com/articles/response-times-3-important-limits/
  12. Muss jede Interaktion in weniger als 100ms abgeschlossen sein?
  13. NEIN!
  14. Interaktion < 100 msErste Darstellung < 1 s Lebenszyklus einer Webanwendung Seite und Ressourcen werden geladen Seite wird dargestellt Benutzer interagiert mit der Seite AJAX Anfrage DOM Manipulation
  15. Erste Darstellung
  16. Initiale Darstellung / Critical Rendering Path (CRP) Netzwerk HTML DOM JavaScript CSS CSSOM Render Tree Layout Paint
  17. Strategien zur Verbesserung des Netzwerkzugriffes (Serverseitig / Grundwissen) • Anzahl der übertragenen Bytes reduzieren • Reduzieren Sie das DOM • Verkleinern (Minify) der Dateien • Komprimieren der Dateien (gzip) • Nicht benötigte Styles / JavaScript entfernen • CDNs einbinden • Domains ohne Cookies für statische Inhalte nutzen • Cache Header setzen ... • Anzahl der Anfragen reduzieren • Kombinieren von Dateien
  18. Demo (Serverseitige Optimierung) Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo1/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo1/
  19. DOM Parsing (1) <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Rendering</title> <link href=“css/style.css“ rel=“stylesheet“/> </head> <body> <h1>Demo 2 Rendering</h1> <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> <p>Paragraph 4</p> </body> </html>
  20. DOM Parsing (2) html head meta meta title link body h1 Demo 2 p Paragrap h 1 p Paragrap h 2 p Paragrap h 3 p Paragrap h 4
  21. CSS Parsing (CSSOM) (1) body { font-size: 20px; } p { margin:20px; } p:nth-child(3) { display: none; }
  22. CSS Parsing (CSSOM) (2) body font-size: 20px p margin: 20px nth-child(3): display: none
  23. Render Tree body h1 Demo 2 p Paragraph 1 p Paragraph 3 p Paragraph 4
  24. CSS blockiert das Rendering! Netzwerk HTML DOM CSS CSSOM Render Tree
  25. JavaScript blockiert das DOM Parsing und kann erst ausgeführt werden, wenn das CSSOM vollständig ist Netzwerk HTML DOM JavaScript CSS CSSOM Render Tree
  26. Demo Critical Rendering Path (CRP) Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo2/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo2/
  27. Caching • Über Cache Header und ETags können Dateien im lokalen Browser Cache vorgehalten werden • Dieser kann jedoch durch den Benutzer (oder automatisch durch den Browser) gelöscht werden • Alternative, besonders für Single Page Applications: •  Caching über den HTML 5 Offline Modus
  28. Demo Offline Caching Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo3/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo3/
  29. Laufzeitoptimierung
  30. Ajax Caching • Der Browser Cache cached GET Anfragen an Web Services • Alternative: LocalStorage
  31. Demo Offline Caching Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo4/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo4/
  32. Rendering / LayoutStorm Script Style Layout Paint Script Style Layout Style Layout Style Layout Paint
  33. Demo Layout Storm Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo5/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo5/
  34. Demo RequestAnimationFrame Online Demo: http://andrekraemer.github.io/WebPerfDemo/Demo6/ Source Code: http://github.com/andrekraemer/WebPerfDemo/Demo6/
  35. Zusammenfassung • Verstehen Sie das Critical Path Rendering um die Zeit zur ersten Darstellung Ihrer Website zu optimieren • CSS und JavaScript blockieren das Rendering • Überdenken Sie Ihre Caching Strategien • Abstrahieren Sie Datenzugriffe um einfach Caching einbauen zu können • Liefern Sie nach Möglichkeit zunächst gecachte Inhalte und liefern Sie die „Live Daten“ anschließend nach • Rendern / Zeichnen Sie über Request-Animation Frame statt über SetTimeout
  36. Homepage andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer Vielen Dank! Blog Xing Facebook Twitter Google+ 37
  37. Meine Dienstleistungen • Schulungen • ASP.NET / AngularJS / Aurelia • Xamarin • TX Text Control • Unit Testing • Team Foundation Server • .NET Datenzugriff (Entity Framework, NHibernate, Micro O/R Mapper) • Consulting • Durchführung von Technologieworkshops • Code- / Architekturreviews • Analyse von managed Memory Leaks / Performancereviews • Prototypenentwicklung • Remote Entwickler-Support • Projektbegleitendes Coaching • Softwareentwicklung • Mobile Apps (Android, iOS, Windows 10, Windows 8, Windows Phone) • Entwicklung von Web-Anwendungen mit ASP.NET und AngularJS oder Aurelia 38andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer

Hinweis der Redaktion

  1. Demo Source Code: https://github.com/andrekraemer/Webperfdemo
  2. Selbständiger Softwareentwickler, Trainer und Berater Partner im IT-Visions Expertennetzwerk Microsoft MVP, TX Text Control MVP und Video Trainer bei video2brain
  3. Langsam bedeutet dass der Benutzer unzufrieden ist. Das mag zwar nun sehr subjektiv klingen, allerdings gibt es recht objektiv messbare Wartezeiten ab denen ein Benutzer unzufrieden wird.
  4. Beispiel: Sortieren einer Grid Spalte: Ich habe die Spalte sortiert Der Computer hat die Spalte sortiert Etwas ist
  5. Siehe auch GULP Tasks!
  6. chrome://appcache-internals/# !!!
  7. Achtung! In Demo im Cache Dateien verändern!!!!
Anzeige