SlideShare ist ein Scribd-Unternehmen logo
Frontend
     Performance
          Jakob Schröter




20.01.2012 @ Hochschule der Medien Stuttgart
Frontend Engineer


                                      Kajona CMS




Bachelor of Computer
  Science in Media                Master of Computer
                                  Science and Media


                           Wanderer
            Schlagzeuger
Frontend Performance @ Hochschule der Medien Stuttgart
PERFORMANCE
Frontend Performance @ Hochschule der Medien Stuttgart
FRONTEND PERFORMANCE
Frontend Performance @ Hochschule der Medien Stuttgart
LADEZEIT?
          Spalte2

                    1000 ms


          500 ms


 100 ms


50 ms
Frontend Performance @ Hochschule der Medien Stuttgart
Einfluss der Ladezeit

             Glückliche User
               Mehr User
              Mehr Umsatz




   Kurze
  Ladezeit
Einfluss der Ladezeit
    Amazon                                  +100 ms                                                   1 % weniger Verkäufe1
    Yahoo                                   +400 ms                                                   5-9 % weniger Zugriffe1
    Google                                  +500 ms                                                   20 % weniger Zugriffe1
    Bing                                    +2000 ms                                                  4,3 % weniger Umsatz/Nutzer2

    Shopzilla                               -5000 ms                                                  25 % mehr Zugriffe
                                                                                                      7-12 % mehr Umsatz
                                                                                                      50 % weniger Hardware3
    Mozilla                                 -2200 ms                                                  15,4 % mehr Downloads4


1 http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/
2 http://www.slideshare.net/dyninc/the-user-and-business-impact-of-server-delays-additional-bytes-and-http-chunking-in-web-search-presentation
3 http://radar.oreilly.com/2009/07/velocity-making-your-site-fast.html
4 http://blog.mozilla.com/metrics/category/website-optimization/
User Experience
 Empfohlene Ladezeit:
           – vor 2006: unter 8 Sekunden Jupiter research
           – 2006: unter 4 Sekunden Jupiter research
           – 2009: unter 2 Sekunden Forrester Research


 „Jede Website, deren Ladezeit eine Sekunde
 überschreitet, tut dem Benutzer weh.“ Jakob Nielsen

http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/
10 Golden Principles of
                                    Successful Web Apps

                                                                 Speed
                                                            Instant Utility
                                                          Software is Media
                                                             Less is More
                                                         Make it Programmable
                                                           Make it Personal
                                                                RESTful
                                                            Discoverabilty
                                                                 Clean
                                                                 Playful
http://thinkvitamin.com/web-apps/fred-wilsons-10-golden-principles-of-successful-web-apps/
SEO -> WPO
• Ist Search Engine Optimization ist ein
  Thema von gestern?

• Performance beeinflusst Google Ranking
  seit April 2010
„Das Internet ist nicht
                                      schneller geworden“




http://docs.google.com/a/chromium.org/viewer?a=v&pid=sites&srcid=Y2hyb21pdW0ub3JnfGRldnxneDoxMzcyOWI1N2I4YzI3NzE2
PERFORMANCE OPTIMIEREN
Messen: z.B. JMeter
Bottlenecks finden: Profiling des Backends
Code optimieren / mehr Server-Hardware / bessere Server-Anbindung
Was wollen wir messen?


Wahrgenommene Wartezeit!
   = Inhalt ist für den Nutzer sichtbar
   = Nutzer denkt, er kann interagieren
Performance messen #1
• HTML-Seite generiert und          • Definiertes DOM-Element
  geladen                             sichtbar

• DOM-Ready-Event                   • „Above the Fold“ (AFT)
  DOM ist aufgebaut, Inhalt evtl.     keine Änderungen mehr am
  sichtbar                            sichtbaren Inhalt


• OnLoad-Event
  alle Ressourcen wurden geladen,
  Inhalt evtl. sichtbar
Performance messen #2
• verschiedene Clients
• verschiedene Locations
• verschiedenen Anbindungen

• Performance kontinuierlich messen…
20%



      80%
Wahrgenommene Ladezeit
      einer Webseite


20%



                   80%
Wahrgenommene Ladezeit
         einer Webseite


20%
Server




                      80%
                      Client
Wahrgenommene Ladezeit
         einer Webseite


20%
Server




                      80%
                      Client
WAS PASSIERT IM BROWSER?
Your best friends
•   „F12“-Tools
•   Firebug
•   Yahoo YSlow
•   Google PageSpeed

• Speed limiter: Webscarab
• WebPageTest.org
• ShowSlow.com
HTML (Server)   Resources (Client)
HTTP Requests are expensive!

ANZAHL DER REQUESTS REDUZIEREN
HTTP Requests reduzieren
• Redirects vermeiden

• Dateien sinnvoll kombinieren
  – base.js, dragndrop.js, upload.js, …
  – base.css, dashboard.css, lightbox.css

• Auch Grafiken – CSS Sprites
  – button.png, button_hover.png,
    button_active.png, …
CSS Sprites
sprites.png

                                        40px

                              110px




.button {
  width: 10px; height: 10px;
  background-image: url(sprites.png);
  background-position: 100px 40px;
}
.button:hover {
  background-position: 110px 40px;
}
Intelligentes Browser-Caching
          Use HTTPs potential!
• Achtung, ETag!
                   GET File
     Server                                Client
                              File



                   GET File, if modified
     Server                                Client
                   304 not modified
                                                File
Intelligentes Browser-Caching
• Besser: Expires-Header
                      GET File
     Server                                   Client
                                 File
                             Expires 01.01.2013 00:00




     Server                                   Client
                                                    File
Supercache: Gemeinsames CDN
• Google CDN
  – //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js



• Aber: Single Point Of Failure
  – Asynchron laden
  – Lokales Fallback
Cache busters
•   base-12.js
•   styles-67.css
•   background-890.png
•   890/background.png
•   background.png?890
HTTP Requests are expensive!

REQUESTS VERKLEINERN
Compression & Minifying
• alles was geht: HTML, CSS, JS, JSON, XML,
  …aber keine Bilder, PDFs, SWFs, …


• Komprimieren
  – mod_deflate


• Minimieren
  – YUICompressor, UglifyJS, ...
Frontend Performance @ Hochschule der Medien Stuttgart
Compression & Minifying
hdm-stuttgart.de




                                       Komprimiert
         Original Minified Komprimiert + Minified
 HTML 101 KB       97 KB    17 KB      16 KB
   CSS 90 KB       68 KB    19 KB      14 KB
     JS 243 KB     195 KB   73 KB      63 KB
         434 KB    360 KB   109 KB     93 KB




-341 KB ≈ -79%!
Compression & Minifying
laut.fm
Compression & Minifying
                         netflix.com




 “Adopting a single optimization,
 gzip compression, resulted in a 13-25% speedup
 and cut their outbound network traffic by 50%.”




http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/
IMAGE
OPTIMIZATION
Image Optimization
          JPG         PNG     GIF




         Farbanzahl


• Richtige Abmessungen + „Für Web speichern“
• CSS-Sprites
smushit.com
hdm-stuttgart.de




              130 x 86 px
smushit.com
spiegel.de
smushit.com
koeln.de
smushit.com
laut.de
smushit.com
laut.fm
HDM-STUTTGART.DE


       -325 KB     Compression & Minifying



        -97 KB     Image Optimization



       -422 KB     -49%
HTTP Requests are expensive!

REIHENFOLGE DER REQUESTS
Order of loading resources




<script> blockiert weitere Downloads
<script> blockiert Rendering

-> Reihenfolge beachten
-> defer/async-Attribute bzw. Loading-Tools nutzen
Order of loading resources
                                  DOM-ready         onLoad




                 Zwingend            Sichtbare      Ergänzende
   CSS       notwendige Scripts                                     Pre-/Lazy-Loading
                                     Grafiken         Scripts




base.css      modernizr.min.js     background.jpg   dragndrop.js
                                   button.png       lightbox.js



           <head>                          <body>            Dynamisch per JS
PRELOADING
Preloading
• Z.B. Loginseite
LAZY-LOADING
Post-loading
Asynchrone Requests
• Inhalte per AJAX nachladen

• Testen! ;-)
Domain sharding / CDN
• Schnellere Antwortzeiten/Übertragungsraten
   – Schlanker Webserver
   – Cookie-freie Domain

• Parallele Downloads (für ältere Browser)
   – nur 2 Requests per Host




         s-static.ak.facebook.com
Usability
• Kann die Nutzerführung optimiert werden?

• Kann der Nutzer bereits etwas tun, während
  er warten muss?
Advanced WPO

NOCH NICHT SCHNELL GENUG?
Rendering optimieren
• Progressive Rendering / Early Flushing

• Anzahl der DOM-Element reduzieren

• Reflow optimieren
JavaScript optimieren
• JavaScript Best Practices
• DOM-Manipulationen
• Memory Leaks fixen

• Verzögertes Parsen / Ausführen

<script>
    /*
    function weNeedThisLater () {}
    var weNeedThisLater2 = 123;
    */
</script>
CSS optimieren
• Selektoren sind unterschiedlich schnell
             .myStyle { }
             ul li .myStyle { }


• CSS braucht Rechenleistung
       – border-radius, box-shadow, text-shadow,
         background-image, …


http://perfectionkills.com/profiling-css-for-fun-and-profit-optimization-notes/
Chrome Speed Tracer
Strangeloop Site Optimizer




Fokus auf der vom Nutzer wahrgenommenen Ladezeit.
Analysiert Nutzerverhalten und lädt Ressourcen bereits vor.
Web Performance Optimization

„IST JA GANZ SCHÖN
AUFWÄNDIG…“
Sehr gute Tools verfügbar
• Yahoo YSlow

• Google PageSpeed

• Dynatrace AJAX Edition

• WebPageTest.org
Vieles lässt sich automatisieren
Integration in den Deployment/Build-Prozess

  – JS/CSS-Dateien kombinieren
  – Compression & Minifying
  – Caching und Cache busters
  – Bildoptimierung
  – Verteilung auf CDN
Auf dem Server
• On-the-fly
  – Mod_deflate
  – Mod_pagespeed
  – WEBO Site SpeedUp (PHP)
Externe (kommerzielle) Services
• On-the-fly in der Cloud
  – blaze.io
  – strangeloop.com
  – Google Page Speed Service


• Monitoring
  – Gomez
HTML 5 + CSS 3 + JavaScript
• CSS 3
   – CSS statt Grafiken
   – Canvas

• HTML 5
   –   Network Timing API
   –   Web Storage statt Cookies
   –   Web Workers
   –   Web Sockets

• JavaScript!!!
Multiplexed streams
          Request prioritization      Server push & hint

                            HTTP header compression



Was Google hat, was wir (noch) nicht haben…

GOOGLE + CHROME                         use   SPDY
                                              An experimental protocol
                                              for a faster web


                 ~50% reduction in page load time
Frontend Performance @ Hochschule der Medien Stuttgart
Entlastet auch
         Enorme                   die Server                 Basics sind einfach
       Auswirkungen



 Best Practices
                      Frontend
                    Performance
  beachten &
weiter optimieren     matters!
                                                     Kosten/Nutzen abwägen
                    Direkte Verbesserung
                        für die Nutzer
                                           don‘t fiddle – analyse first
         Mobiles Internet
                                  RIA
Weiterführend
• Bücher:
   – Steve Souders: High Performance Websites
   – Steve Souders: Even Faster Websites
• Test-Webseite: http://stevesouders.com/cuzillion

• http://developer.yahoo.com/performance/
• http://code.google.com/intl/de-DE/speed/
Beispiele aus der Praxis
Dynamische Bildauslieferung
• /image.php?src=image.jpg&width=200

• Standard:
  – Kein Client-seitiges Caching
  – Evtl. Server-seitiges Caching
  – PHP wird ausgeführt
  – Evtl. Session + Datenbank-Verbindung
Dynamische Bildauslieferung
• /image/w200/11259834/hdm-stuttgart.jpg

• Optimale Lösung:
  – Server-seitiges Caching
  – Client-seitiges Caching
     • Cache Header + Expires Header + HTTP 304 Not Modified
     • Cache buster + Redirect für alte URLs

  – PHP nur wenn wirklich benötigt
     • Mod_rewrite
Best practices
• Nicht alles muss neu erfunden werden
  – HTML5 Boilerplate verwenden

• data-URLs

• http://caniuse.com/

• Memory Leaks im Client
• Messen was auf dem Client passiert
Frontend
     Performance
        Jakob Schröter

jakob.schroeter@seitenbau.com

Weitere ähnliche Inhalte

PDF
SDC2011: Web Performance Optimization
PDF
Client-side Performance Optimizations
PDF
Crawl-Budget Optimierung - SEOday 2015
PDF
PHP Kongress 2010 - Web-Performance
PDF
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
PPTX
OnPage SEO - Technik Grundlagen - Danny Linden
PPT
Frontend-Performance mit PHP
ODP
Frontend Performance
SDC2011: Web Performance Optimization
Client-side Performance Optimizations
Crawl-Budget Optimierung - SEOday 2015
PHP Kongress 2010 - Web-Performance
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
OnPage SEO - Technik Grundlagen - Danny Linden
Frontend-Performance mit PHP
Frontend Performance

Ähnlich wie Frontend Performance @ Hochschule der Medien Stuttgart (20)

PDF
Site Speed EXTREME - SEOkomm 2014
PDF
Automatisierung von Client-seitigen Web-Performance-Optimierungen
PDF
Der Business-Case für Beschleunigung im digitalen Marketing
PPTX
Front End Performance Optimierung
PDF
Mehr Pagespeed geht nicht - SEOkomm 2015
PPTX
Web Performance Optimierung (WPO)
PPTX
SEO für Magento Commerce - SEOkomm 2011
PDF
Morning Session: Qualitätskriterien für erfolgreiche Websites - für "Nicht-Te...
PDF
Campixx 2012-ladezeit-extreme
PDF
Shopleiter Magazin Nr. 3 - SEO-, SEM- und eCommerce-Tipps
PPTX
Top 10 Internet Trends 2011
PDF
Performance-Optimierung für WordPress-Websites
PPT
Frontend-Performance @ IPC
PDF
Mobile friendly websites on SMX 2016
PDF
Web Performance Optimization - Web Tech Conference 2011 Talk
PDF
Performance Optimierung - Barrierefreiheit beginnt mit Ladezeiten
PDF
Site Speed am Limit - Campixx 2015
PDF
Web Performance Optimization - JAX 2011 Talk
PPT
Website Optimierungen
PPT
Performance meetup wpm fuer fortgeschrittene
Site Speed EXTREME - SEOkomm 2014
Automatisierung von Client-seitigen Web-Performance-Optimierungen
Der Business-Case für Beschleunigung im digitalen Marketing
Front End Performance Optimierung
Mehr Pagespeed geht nicht - SEOkomm 2015
Web Performance Optimierung (WPO)
SEO für Magento Commerce - SEOkomm 2011
Morning Session: Qualitätskriterien für erfolgreiche Websites - für "Nicht-Te...
Campixx 2012-ladezeit-extreme
Shopleiter Magazin Nr. 3 - SEO-, SEM- und eCommerce-Tipps
Top 10 Internet Trends 2011
Performance-Optimierung für WordPress-Websites
Frontend-Performance @ IPC
Mobile friendly websites on SMX 2016
Web Performance Optimization - Web Tech Conference 2011 Talk
Performance Optimierung - Barrierefreiheit beginnt mit Ladezeiten
Site Speed am Limit - Campixx 2015
Web Performance Optimization - JAX 2011 Talk
Website Optimierungen
Performance meetup wpm fuer fortgeschrittene
Anzeige

Mehr von Jakob (7)

PDF
Client-side Web Performance Optimization [paper]
PDF
HTML5 Video vs. Flash Video [paper]
PDF
Flash vs. Silverlight auf dem mobilen Endgerät
PDF
Flash Video vs. HTML5 Video
PDF
Ruby On Rails - 1. Ruby Introduction
PDF
Ruby On Rails - 2. Rails Introduction
PDF
Ruby On Rails - 3. Rails Addons
Client-side Web Performance Optimization [paper]
HTML5 Video vs. Flash Video [paper]
Flash vs. Silverlight auf dem mobilen Endgerät
Flash Video vs. HTML5 Video
Ruby On Rails - 1. Ruby Introduction
Ruby On Rails - 2. Rails Introduction
Ruby On Rails - 3. Rails Addons
Anzeige

Frontend Performance @ Hochschule der Medien Stuttgart

  • 1. Frontend Performance Jakob Schröter 20.01.2012 @ Hochschule der Medien Stuttgart
  • 2. Frontend Engineer Kajona CMS Bachelor of Computer Science in Media Master of Computer Science and Media Wanderer Schlagzeuger
  • 8. LADEZEIT? Spalte2 1000 ms 500 ms 100 ms 50 ms
  • 10. Einfluss der Ladezeit Glückliche User Mehr User Mehr Umsatz Kurze Ladezeit
  • 11. Einfluss der Ladezeit Amazon +100 ms 1 % weniger Verkäufe1 Yahoo +400 ms 5-9 % weniger Zugriffe1 Google +500 ms 20 % weniger Zugriffe1 Bing +2000 ms 4,3 % weniger Umsatz/Nutzer2 Shopzilla -5000 ms 25 % mehr Zugriffe 7-12 % mehr Umsatz 50 % weniger Hardware3 Mozilla -2200 ms 15,4 % mehr Downloads4 1 http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/ 2 http://www.slideshare.net/dyninc/the-user-and-business-impact-of-server-delays-additional-bytes-and-http-chunking-in-web-search-presentation 3 http://radar.oreilly.com/2009/07/velocity-making-your-site-fast.html 4 http://blog.mozilla.com/metrics/category/website-optimization/
  • 12. User Experience Empfohlene Ladezeit: – vor 2006: unter 8 Sekunden Jupiter research – 2006: unter 4 Sekunden Jupiter research – 2009: unter 2 Sekunden Forrester Research „Jede Website, deren Ladezeit eine Sekunde überschreitet, tut dem Benutzer weh.“ Jakob Nielsen http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/
  • 13. 10 Golden Principles of Successful Web Apps Speed Instant Utility Software is Media Less is More Make it Programmable Make it Personal RESTful Discoverabilty Clean Playful http://thinkvitamin.com/web-apps/fred-wilsons-10-golden-principles-of-successful-web-apps/
  • 14. SEO -> WPO • Ist Search Engine Optimization ist ein Thema von gestern? • Performance beeinflusst Google Ranking seit April 2010
  • 15. „Das Internet ist nicht schneller geworden“ http://docs.google.com/a/chromium.org/viewer?a=v&pid=sites&srcid=Y2hyb21pdW0ub3JnfGRldnxneDoxMzcyOWI1N2I4YzI3NzE2
  • 16. PERFORMANCE OPTIMIEREN Messen: z.B. JMeter Bottlenecks finden: Profiling des Backends Code optimieren / mehr Server-Hardware / bessere Server-Anbindung
  • 17. Was wollen wir messen? Wahrgenommene Wartezeit! = Inhalt ist für den Nutzer sichtbar = Nutzer denkt, er kann interagieren
  • 18. Performance messen #1 • HTML-Seite generiert und • Definiertes DOM-Element geladen sichtbar • DOM-Ready-Event • „Above the Fold“ (AFT) DOM ist aufgebaut, Inhalt evtl. keine Änderungen mehr am sichtbar sichtbaren Inhalt • OnLoad-Event alle Ressourcen wurden geladen, Inhalt evtl. sichtbar
  • 19. Performance messen #2 • verschiedene Clients • verschiedene Locations • verschiedenen Anbindungen • Performance kontinuierlich messen…
  • 20. 20% 80%
  • 21. Wahrgenommene Ladezeit einer Webseite 20% 80%
  • 22. Wahrgenommene Ladezeit einer Webseite 20% Server 80% Client
  • 23. Wahrgenommene Ladezeit einer Webseite 20% Server 80% Client
  • 24. WAS PASSIERT IM BROWSER?
  • 25. Your best friends • „F12“-Tools • Firebug • Yahoo YSlow • Google PageSpeed • Speed limiter: Webscarab • WebPageTest.org • ShowSlow.com
  • 26. HTML (Server) Resources (Client)
  • 27. HTTP Requests are expensive! ANZAHL DER REQUESTS REDUZIEREN
  • 28. HTTP Requests reduzieren • Redirects vermeiden • Dateien sinnvoll kombinieren – base.js, dragndrop.js, upload.js, … – base.css, dashboard.css, lightbox.css • Auch Grafiken – CSS Sprites – button.png, button_hover.png, button_active.png, …
  • 29. CSS Sprites sprites.png 40px 110px .button { width: 10px; height: 10px; background-image: url(sprites.png); background-position: 100px 40px; } .button:hover { background-position: 110px 40px; }
  • 30. Intelligentes Browser-Caching Use HTTPs potential! • Achtung, ETag! GET File Server Client File GET File, if modified Server Client 304 not modified File
  • 31. Intelligentes Browser-Caching • Besser: Expires-Header GET File Server Client File Expires 01.01.2013 00:00 Server Client File
  • 32. Supercache: Gemeinsames CDN • Google CDN – //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js • Aber: Single Point Of Failure – Asynchron laden – Lokales Fallback
  • 33. Cache busters • base-12.js • styles-67.css • background-890.png • 890/background.png • background.png?890
  • 34. HTTP Requests are expensive! REQUESTS VERKLEINERN
  • 35. Compression & Minifying • alles was geht: HTML, CSS, JS, JSON, XML, …aber keine Bilder, PDFs, SWFs, … • Komprimieren – mod_deflate • Minimieren – YUICompressor, UglifyJS, ...
  • 37. Compression & Minifying hdm-stuttgart.de Komprimiert Original Minified Komprimiert + Minified HTML 101 KB 97 KB 17 KB 16 KB CSS 90 KB 68 KB 19 KB 14 KB JS 243 KB 195 KB 73 KB 63 KB 434 KB 360 KB 109 KB 93 KB -341 KB ≈ -79%!
  • 39. Compression & Minifying netflix.com “Adopting a single optimization, gzip compression, resulted in a 13-25% speedup and cut their outbound network traffic by 50%.” http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/
  • 41. Image Optimization JPG PNG GIF Farbanzahl • Richtige Abmessungen + „Für Web speichern“ • CSS-Sprites
  • 47. HDM-STUTTGART.DE -325 KB Compression & Minifying -97 KB Image Optimization -422 KB -49%
  • 48. HTTP Requests are expensive! REIHENFOLGE DER REQUESTS
  • 49. Order of loading resources <script> blockiert weitere Downloads <script> blockiert Rendering -> Reihenfolge beachten -> defer/async-Attribute bzw. Loading-Tools nutzen
  • 50. Order of loading resources DOM-ready onLoad Zwingend Sichtbare Ergänzende CSS notwendige Scripts Pre-/Lazy-Loading Grafiken Scripts base.css modernizr.min.js background.jpg dragndrop.js button.png lightbox.js <head> <body> Dynamisch per JS
  • 55. Asynchrone Requests • Inhalte per AJAX nachladen • Testen! ;-)
  • 56. Domain sharding / CDN • Schnellere Antwortzeiten/Übertragungsraten – Schlanker Webserver – Cookie-freie Domain • Parallele Downloads (für ältere Browser) – nur 2 Requests per Host s-static.ak.facebook.com
  • 57. Usability • Kann die Nutzerführung optimiert werden? • Kann der Nutzer bereits etwas tun, während er warten muss?
  • 58. Advanced WPO NOCH NICHT SCHNELL GENUG?
  • 59. Rendering optimieren • Progressive Rendering / Early Flushing • Anzahl der DOM-Element reduzieren • Reflow optimieren
  • 60. JavaScript optimieren • JavaScript Best Practices • DOM-Manipulationen • Memory Leaks fixen • Verzögertes Parsen / Ausführen <script> /* function weNeedThisLater () {} var weNeedThisLater2 = 123; */ </script>
  • 61. CSS optimieren • Selektoren sind unterschiedlich schnell .myStyle { } ul li .myStyle { } • CSS braucht Rechenleistung – border-radius, box-shadow, text-shadow, background-image, … http://perfectionkills.com/profiling-css-for-fun-and-profit-optimization-notes/
  • 63. Strangeloop Site Optimizer Fokus auf der vom Nutzer wahrgenommenen Ladezeit. Analysiert Nutzerverhalten und lädt Ressourcen bereits vor.
  • 64. Web Performance Optimization „IST JA GANZ SCHÖN AUFWÄNDIG…“
  • 65. Sehr gute Tools verfügbar • Yahoo YSlow • Google PageSpeed • Dynatrace AJAX Edition • WebPageTest.org
  • 66. Vieles lässt sich automatisieren Integration in den Deployment/Build-Prozess – JS/CSS-Dateien kombinieren – Compression & Minifying – Caching und Cache busters – Bildoptimierung – Verteilung auf CDN
  • 67. Auf dem Server • On-the-fly – Mod_deflate – Mod_pagespeed – WEBO Site SpeedUp (PHP)
  • 68. Externe (kommerzielle) Services • On-the-fly in der Cloud – blaze.io – strangeloop.com – Google Page Speed Service • Monitoring – Gomez
  • 69. HTML 5 + CSS 3 + JavaScript • CSS 3 – CSS statt Grafiken – Canvas • HTML 5 – Network Timing API – Web Storage statt Cookies – Web Workers – Web Sockets • JavaScript!!!
  • 70. Multiplexed streams Request prioritization Server push & hint HTTP header compression Was Google hat, was wir (noch) nicht haben… GOOGLE + CHROME use SPDY An experimental protocol for a faster web ~50% reduction in page load time
  • 72. Entlastet auch Enorme die Server Basics sind einfach Auswirkungen Best Practices Frontend Performance beachten & weiter optimieren matters! Kosten/Nutzen abwägen Direkte Verbesserung für die Nutzer don‘t fiddle – analyse first Mobiles Internet RIA
  • 73. Weiterführend • Bücher: – Steve Souders: High Performance Websites – Steve Souders: Even Faster Websites • Test-Webseite: http://stevesouders.com/cuzillion • http://developer.yahoo.com/performance/ • http://code.google.com/intl/de-DE/speed/
  • 75. Dynamische Bildauslieferung • /image.php?src=image.jpg&width=200 • Standard: – Kein Client-seitiges Caching – Evtl. Server-seitiges Caching – PHP wird ausgeführt – Evtl. Session + Datenbank-Verbindung
  • 76. Dynamische Bildauslieferung • /image/w200/11259834/hdm-stuttgart.jpg • Optimale Lösung: – Server-seitiges Caching – Client-seitiges Caching • Cache Header + Expires Header + HTTP 304 Not Modified • Cache buster + Redirect für alte URLs – PHP nur wenn wirklich benötigt • Mod_rewrite
  • 77. Best practices • Nicht alles muss neu erfunden werden – HTML5 Boilerplate verwenden • data-URLs • http://caniuse.com/ • Memory Leaks im Client • Messen was auf dem Client passiert
  • 78. Frontend Performance Jakob Schröter jakob.schroeter@seitenbau.com