SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
✔   Webbprestanda?
                 ✔   Tips!
                     ✔   Serversidan
                         Klientsidan
Fredrik Wendt
                     ✔



 jsolutions.se
                     ✔   Båda sidor
                 ✔   Verktyg
"Komponent"


                       Java-    JSON
Klient   HTML
          JSP    CSS
                       Script   /XML




Server   JSP     ASP   SQL      Filer
Hur funkar webben?
                    HTML
                    CSS
                ●   DOM ready
                    script
                    img
                    iframe
                ●   onLoad
Dagens "take aways"

          ●   Effektivare överföring

          ●   Få HTTP-anrop

          ●   Verktyg
Serversidan
      ●   Effektivare överföring
          ●   gzip
      ●   Få HTTP-anrop
          ●   Utnyttja browserns
              cache
              –   Expires
              –   Last-Modified
Komprimera med gzip
          ●   50 - 75 % färre bytes
              att skicka över linan
          ●   bittar = pengar
          ●   bittar = CPU-tid


              » Accept-Encoding
              « Content-Encoding
Använd browserns cache!
            ●   Last-Modified
            ●   Expires *

                ●   E-Tag - stäng av!
                ●   Content-Cache


           STOR besparings-
           potential!
Klientsidan
      ●   Effektivare överföring
          ●   Parallell nedladdning
      ●   Få HTTP-anrop
          ●   Kombinera JS, CSS
              och bilder
LABjs.com - Kyle Simpson
●   Laddar JS parallellt
●   Exekverar enligt
    utpekad ordning
●   Blockerar inte andra
    resurser (CSS & bilder)
●   Varning: FUBC
FUBC
...
<head>
<script>
if (google.j.b)
  document.body.style.visibility='hidden';
</script>
</head>
<body>
...
Få HTTP-anrop
       ●   Kombinera CSS-filer
       ●   Kombinera JS-filer
       ●   CSS sprites
           SpriteMe
       ●   Komprimera bilder
           Smush.it
Packa bilder
●   smush.it
●   EFWS
Fyll cachen!
      ●   Dela CSS, JS och
          bild-sprites i två delar:
          start och övrigt
      ●   Optimera startsidan
          till att bara ladda
          start-delarna
      ●   Efter onLoad på
          startsida, ladda
          övrigt-delarna
Kommentera bort JavaScript
●   Genom att             <script language...>
    kommentera ut all     /*
    kod evalueras den     var mylib = function() {
    snabbt av browsern.
                           this.nice = function() ...
●   Plocka bort           }();
    kommentarerna, kör
    eval() och voila!     */
                          </script>
●   Ladda i IFRAME t ex
Applikationen
       ●   HTML-optimering
       ●   DNS-uppslagningar
       ●   Parallella HTTP-
           anrop
       ●   Få HTTP-anrop
       ●   Flush early
Parallella HTTP-anrop
                  ●   Script
                      LABjs
Parallella HTTP-anrop
                   ●    DNS-
                        uppslag
                        tar tid
                   ●    DNS-info
                        ligger inte
                        i cachen
                   ●    tumregel:
                        2 till 4
                        domäner
Börja mäta
     ●   Cache (304) och
         bytes/besök/sida
     ●   Renderingstid
         (DOMReady, onLoad)
     ●   Affärs-/nyckelvärden
         såsom antal besök,
         avslutade köp,
         genomsnittlig besökstid,
         låtar lyssnade, bilder
         visade
Verktyg
Firebug och Firefox!
YSlow & Google Page Speed
            ●   14 regler från HPWS
            ●   utskriftsvänlig rapport
            ●   smushit
            ●   Minification
Douglas Crockford & Steve Souders
Sammanfattning
●   Verktyg
    ●   Firefox + Firebug
    ●   YSlow och
        Google Page Speed
    ●   SpriteMe, Smush.it
●   Börja mäta det som
    känns meningsfullt
        –   bytes/besök
        –   YSlow-betyg
        –   DOMReady, onLoad
Sammanfattning
       ●   gzip
       ●   slå ihop CSS & JS
       ●   css sprites
       ●   två domäner
       ●   LABjs (blockerande JS)
       ●   använd cachen
           Last-Modified, Expires
References
                              http://getfirefox.com/
                             http://getfirebug.com/
                      http://developer.yahoo.com/yslow/
                 http://code.google.com/speed/page-speed/
             https://addons.mozilla.org/en-US/firefox/addon/60

                                   Photos from
                http://flickr.com/naoh/ (man in front of laptop)
               http://flickr.com/ipom/ (Souders and Crockford)

                                This document
               http://creativecommons.org/licenses/by-sa/3.0/

         All other graphics comes from gnome-icon-theme (GPL),
         /usr/share/icons/gnome/scalable/*/*.svg converted to png
  Ulisse Perusin <uli.peru@gmail.com>, Riccardo Buzzotta <raozuzu@yahoo.it>, Josef Vybíral
        <cornelius@vybiral.info>, Hylke Bons <h.bons@student.rug.nl>, Ricardo González
       <rick@jinlabs.com>, Lapo Calamandrei <calamandrei@gmail.com>, Rodney Dawes
<dobey@novell.com>, Luca Ferretti <elle.uca@libero.it>, Tuomas Kuosmanen <tigert@gimp.org>,
         Andreas Nilsson <nisses.mail@home.se>, Jakub Steiner <jimmac@novell.com>
Fredrik Wendt
 jsolutions.se

Weitere ähnliche Inhalte

Was ist angesagt?

jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 CacheAnton Tibblin
 
#wpsthlm: WordPress prestanda - av Jonas Lejon
#wpsthlm: WordPress prestanda - av Jonas Lejon#wpsthlm: WordPress prestanda - av Jonas Lejon
#wpsthlm: WordPress prestanda - av Jonas Lejontdhftw
 
WebSockets för applikationstestare
WebSockets för applikationstestareWebSockets för applikationstestare
WebSockets för applikationstestareholiman
 
Webbapplikationer - HTML
Webbapplikationer - HTMLWebbapplikationer - HTML
Webbapplikationer - HTMLAnton Tibblin
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenAnton Tibblin
 
HT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLHT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLAnton Tibblin
 
VT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapVT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapAnton Tibblin
 

Was ist angesagt? (12)

jQuery & HTML5 Cache
jQuery & HTML5 CachejQuery & HTML5 Cache
jQuery & HTML5 Cache
 
Ajax - jQuery
Ajax - jQueryAjax - jQuery
Ajax - jQuery
 
#wpsthlm: WordPress prestanda - av Jonas Lejon
#wpsthlm: WordPress prestanda - av Jonas Lejon#wpsthlm: WordPress prestanda - av Jonas Lejon
#wpsthlm: WordPress prestanda - av Jonas Lejon
 
WebSockets för applikationstestare
WebSockets för applikationstestareWebSockets för applikationstestare
WebSockets för applikationstestare
 
JavaScript - Intro
JavaScript - IntroJavaScript - Intro
JavaScript - Intro
 
Grunt och gulp
Grunt och gulpGrunt och gulp
Grunt och gulp
 
Introduktion till webbutveckling
Introduktion till webbutvecklingIntroduktion till webbutveckling
Introduktion till webbutveckling
 
Cms - WordPress
Cms - WordPressCms - WordPress
Cms - WordPress
 
Webbapplikationer - HTML
Webbapplikationer - HTMLWebbapplikationer - HTML
Webbapplikationer - HTML
 
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursenHT17 - DA156A - Sammanfattning av kursen
HT17 - DA156A - Sammanfattning av kursen
 
HT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTMLHT17 - DA156A - Introduktion till HTML
HT17 - DA156A - Introduktion till HTML
 
VT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapVT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & Bootstrap
 

Ähnlich wie Webboptimering 25 min

HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonAnton Tibblin
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklareThomas Adrian
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleAnton Tibblin
 
Optimera mera
Optimera meraOptimera mera
Optimera meraze7en
 
Metodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testningMetodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testningJohan Holmberg
 
Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Per Åström
 
VT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.jsVT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.jsAnton Tibblin
 
VT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxVT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxAnton Tibblin
 
Så funkar det (del 3) - webben
Så funkar det (del 3) -  webbenSå funkar det (del 3) -  webben
Så funkar det (del 3) - webbenPeter Antman
 
Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Martin Carlsson
 
VT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkVT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkAnton Tibblin
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältarPer Åström
 
LocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaLocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaAnton Tibblin
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptAnton Tibblin
 

Ähnlich wie Webboptimering 25 min (20)

OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! LoadimpactOPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklare
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottle
 
Optimera mera
Optimera meraOptimera mera
Optimera mera
 
Metodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testningMetodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testning
 
Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)
 
jQuery & Ajax
jQuery & AjaxjQuery & Ajax
jQuery & Ajax
 
TypeScript DevSum 2013
TypeScript DevSum 2013TypeScript DevSum 2013
TypeScript DevSum 2013
 
VT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.jsVT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.js
 
13 cms ht14
13 cms ht1413 cms ht14
13 cms ht14
 
VT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxVT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och Ajax
 
Så funkar det (del 3) - webben
Så funkar det (del 3) -  webbenSå funkar det (del 3) -  webben
Så funkar det (del 3) - webben
 
Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5Responsiv webbdesign + HTML5 + CSS5
Responsiv webbdesign + HTML5 + CSS5
 
Cookies och Websockets
Cookies och WebsocketsCookies och Websockets
Cookies och Websockets
 
VT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkVT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverk
 
JavaScript + DOM
JavaScript + DOMJavaScript + DOM
JavaScript + DOM
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältar
 
LocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - MediaLocalStorage - GeoLocation - Media
LocalStorage - GeoLocation - Media
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScript
 

Mehr von Fredrik Wendt

Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016Fredrik Wendt
 
Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01Fredrik Wendt
 
Go.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain'tGo.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain'tFredrik Wendt
 
Impact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team PerformanceImpact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team PerformanceFredrik Wendt
 
Arkitektur i agila projekt
Arkitektur i agila projektArkitektur i agila projekt
Arkitektur i agila projektFredrik Wendt
 
Coding dojos på arbetstid
Coding dojos på arbetstidCoding dojos på arbetstid
Coding dojos på arbetstidFredrik Wendt
 
Js Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockitoJs Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockitoFredrik Wendt
 
Jdojo@Gbg Introduction
Jdojo@Gbg IntroductionJdojo@Gbg Introduction
Jdojo@Gbg IntroductionFredrik Wendt
 
Presentation of JSConf.eu
Presentation of JSConf.euPresentation of JSConf.eu
Presentation of JSConf.euFredrik Wendt
 
Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, VarbergFredrik Wendt
 

Mehr von Fredrik Wendt (14)

Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016
 
Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01
 
Go.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain'tGo.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain't
 
Impact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team PerformanceImpact of CD, Clean Code, ... on Team Performance
Impact of CD, Clean Code, ... on Team Performance
 
Arkitektur i agila projekt
Arkitektur i agila projektArkitektur i agila projekt
Arkitektur i agila projekt
 
Coding dojos på arbetstid
Coding dojos på arbetstidCoding dojos på arbetstid
Coding dojos på arbetstid
 
Clean Code 2
Clean Code 2Clean Code 2
Clean Code 2
 
Js Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockitoJs Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockito
 
Jdojo@Gbg Introduction
Jdojo@Gbg IntroductionJdojo@Gbg Introduction
Jdojo@Gbg Introduction
 
Presentation of JSConf.eu
Presentation of JSConf.euPresentation of JSConf.eu
Presentation of JSConf.eu
 
Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, Varberg
 
Clean code
Clean codeClean code
Clean code
 
Clean Code
Clean CodeClean Code
Clean Code
 
Using Mockito
Using MockitoUsing Mockito
Using Mockito
 

Webboptimering 25 min

  • 1. Webbprestanda? ✔ Tips! ✔ Serversidan Klientsidan Fredrik Wendt ✔ jsolutions.se ✔ Båda sidor ✔ Verktyg
  • 2.
  • 3. "Komponent" Java- JSON Klient HTML JSP CSS Script /XML Server JSP ASP SQL Filer
  • 4. Hur funkar webben? HTML CSS ● DOM ready script img iframe ● onLoad
  • 5. Dagens "take aways" ● Effektivare överföring ● Få HTTP-anrop ● Verktyg
  • 6. Serversidan ● Effektivare överföring ● gzip ● Få HTTP-anrop ● Utnyttja browserns cache – Expires – Last-Modified
  • 7. Komprimera med gzip ● 50 - 75 % färre bytes att skicka över linan ● bittar = pengar ● bittar = CPU-tid » Accept-Encoding « Content-Encoding
  • 8. Använd browserns cache! ● Last-Modified ● Expires * ● E-Tag - stäng av! ● Content-Cache STOR besparings- potential!
  • 9. Klientsidan ● Effektivare överföring ● Parallell nedladdning ● Få HTTP-anrop ● Kombinera JS, CSS och bilder
  • 10. LABjs.com - Kyle Simpson ● Laddar JS parallellt ● Exekverar enligt utpekad ordning ● Blockerar inte andra resurser (CSS & bilder) ● Varning: FUBC
  • 11. FUBC ... <head> <script> if (google.j.b) document.body.style.visibility='hidden'; </script> </head> <body> ...
  • 12. Få HTTP-anrop ● Kombinera CSS-filer ● Kombinera JS-filer ● CSS sprites SpriteMe ● Komprimera bilder Smush.it
  • 13. Packa bilder ● smush.it ● EFWS
  • 14. Fyll cachen! ● Dela CSS, JS och bild-sprites i två delar: start och övrigt ● Optimera startsidan till att bara ladda start-delarna ● Efter onLoad på startsida, ladda övrigt-delarna
  • 15. Kommentera bort JavaScript ● Genom att <script language...> kommentera ut all /* kod evalueras den var mylib = function() { snabbt av browsern. this.nice = function() ... ● Plocka bort }(); kommentarerna, kör eval() och voila! */ </script> ● Ladda i IFRAME t ex
  • 16. Applikationen ● HTML-optimering ● DNS-uppslagningar ● Parallella HTTP- anrop ● Få HTTP-anrop ● Flush early
  • 17. Parallella HTTP-anrop ● Script LABjs
  • 18. Parallella HTTP-anrop ● DNS- uppslag tar tid ● DNS-info ligger inte i cachen ● tumregel: 2 till 4 domäner
  • 19. Börja mäta ● Cache (304) och bytes/besök/sida ● Renderingstid (DOMReady, onLoad) ● Affärs-/nyckelvärden såsom antal besök, avslutade köp, genomsnittlig besökstid, låtar lyssnade, bilder visade
  • 22. YSlow & Google Page Speed ● 14 regler från HPWS ● utskriftsvänlig rapport ● smushit ● Minification
  • 23. Douglas Crockford & Steve Souders
  • 24. Sammanfattning ● Verktyg ● Firefox + Firebug ● YSlow och Google Page Speed ● SpriteMe, Smush.it ● Börja mäta det som känns meningsfullt – bytes/besök – YSlow-betyg – DOMReady, onLoad
  • 25. Sammanfattning ● gzip ● slå ihop CSS & JS ● css sprites ● två domäner ● LABjs (blockerande JS) ● använd cachen Last-Modified, Expires
  • 26. References http://getfirefox.com/ http://getfirebug.com/ http://developer.yahoo.com/yslow/ http://code.google.com/speed/page-speed/ https://addons.mozilla.org/en-US/firefox/addon/60 Photos from http://flickr.com/naoh/ (man in front of laptop) http://flickr.com/ipom/ (Souders and Crockford) This document http://creativecommons.org/licenses/by-sa/3.0/ All other graphics comes from gnome-icon-theme (GPL), /usr/share/icons/gnome/scalable/*/*.svg converted to png Ulisse Perusin <uli.peru@gmail.com>, Riccardo Buzzotta <raozuzu@yahoo.it>, Josef Vybíral <cornelius@vybiral.info>, Hylke Bons <h.bons@student.rug.nl>, Ricardo González <rick@jinlabs.com>, Lapo Calamandrei <calamandrei@gmail.com>, Rodney Dawes <dobey@novell.com>, Luca Ferretti <elle.uca@libero.it>, Tuomas Kuosmanen <tigert@gimp.org>, Andreas Nilsson <nisses.mail@home.se>, Jakub Steiner <jimmac@novell.com>