SlideShare a Scribd company logo
Web Performance 101 - Gil Givati
‫נעים להכיר ...‬
‫‪ ‬חברה המתמחה במתן שירותים בתחום ניהול ביצועי מערכות‬
                     ‫בכלל ומערכות מבוססות דפדפן בפרט‬
‫‪ ‬מנהלי ‪Israel Web Performance Optimization meetup‬‬
           ‫‪ ‬נציגי, מטמיעי ומפתחי פתרונות תוכנה בתחומים:‬
                                        ‫‪ ‬האצת אתרים‬
                          ‫‪ ‬ניטור ואיתור תקלות בזמן אמת‬
                         ‫‪www.efficens-software.com ‬‬
                                     ‫‪Twitter: efficens ‬‬
                      ‫‪ :Facebook ‬אפיסנס סופטוור בע"מ‬
                      ‫‪http://www.meetup.com/wpo-il ‬‬
‫בתוכנית היום‬
 What is Web Performance

 How does Web Performance affects our bottom line

 The web Performance building blocks

 Knowing your audience: understanding Browser behaviors

 Measuring Performance using YSlow and Google PageSpeed

 Understanding Waterfalls

 Working with WebPageTest

 Working with DynaTrace Ajax Edition

 JavaScript and you
Web Performance 101 - Gil Givati
‫"הזמן הנתפס על ידי המבקר באתר‬
    ‫בין פעולה (כמו לחיצה) עד לתגובה‬
             ‫משמעותית"‬

‫‪Stephan Thair, Seriti consulting‬‬
‫תפיסת הזמן‬




http://velocityconf.com/velocity2010/public/schedule/detail/13019
Web Performance 101 - Gil Givati
‫איטיות והמוח שלנו‬
“Brain wave analysis from the
  experiment       revealed  that
  participants had to concentrate
  up to 50% more when using
  badly performing websites,
  while     facial   muscle  and
  behavioural analysis of the
  subjects also revealed greater
  agitation and stress in these
  periods.
http://www.ca.com/Files/SupportingPieces/final_webstr
    ess_survey_report_229296.pdf
10
     Performanc
               e            5
    improvemen                                                                      6 secs   8 secs
                                        2 secs                 4 secs
     t (seconds)            0

                           -5            -8%

                         -10
                                                               -25%
                         -15
                                                                                    -33%
     Percentage
       change in         -20                                                                 -38%
           page
     abandonme           -25
              nt
                         -30

                         -35

                         -40
urce: Gomez 2010 Study of 500 Million End-User Interactions Across 200+ Web Sites
http://www.webperformancetoday.com/2010/06/22/the-90-minute-optimization-life-cycle-faster-by-default-before-our-eyes/
http://www.webperformancetoday.com/2010/06/22/the-90-minute-optimization-life-cycle-faster-by-default-before-our-eyes/
http://www.webperformancetoday.com/2010/06/22/the-90-minute-optimization-life-cycle-faster-by-default-before-our-eyes/
Web Performance 101 - Gil Givati
‫מהם ביצועים טובים ?‬
               ‫1.0 שניות נותן תחושה של תגובה מיידית‬                ‫‪‬‬
        ‫1 שניה מונע הסחת דעת ומאפשרת רצף מחשבתי‬                    ‫‪‬‬
                ‫01 שניות שומרות על תשומת לב הגולש‬                  ‫‪‬‬
 ‫8 שניות הוא הזמן הממוצע שלוקח לגולש לקבל החלטה האם‬                ‫‪‬‬
                    ‫הוא נשאר בדף או עובר למקום אחר‬
‫‪Jakob Neilsen. http://www.useit.com/alertbox/response-times.html‬‬
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web performance anatomy
                                        Latency

                        HTTP AJAX/XHR
      IE
 Firefox
Chrome       Browser                     Internet    Server
  Safari
 Opera

              Images
                 CSS
           JavaScript   Cache
                Flash



             Parsing                     DNS        3rd-party
           Layouting                    Server       servers
           Rendering
‫מרכיבי זמן התגובה‬
                                             ‫קריטי ליישומי‬
                                               ‫0.2 ‪Web‬‬




‫‪Server side‬‬       ‫‪Content delivery‬‬        ‫‪Rendering‬‬


                 ‫מחוץ למסגרת המערכת אבל‬
                      ‫עדיין באחריותנו‬



       ‫%09-08 מהזמן נצרך מחוץ לגבולות השרת‬
                                                             ‫91‬
Web Performance 101 - Gil Givati
Bandwidth & Latency
‫הורדת ‪ 200KB‬בקווי‬
     ‫‪1.5Mb/Sec‬‬
    ‫אורכת כשנייה‬
‫לא הבטיחו לנו ממשק אחיד, פשוט ורזה ?‬
It’s a Multi-Browser World: Different for Each
                             Customer Base




Source: http://arstechnica.com/web/news/2011/02/chrome-takes-10-usage-share-ie-continues-to-haemorrhage.ars; http://gs.statcounter.com/#browser_version-ww-monthly-201001-201101
Load Time       Perceived Render
          25


          20


          15
Seconds




          10


           5


           0




               Source: Gomez Real-User Monitoring
                  Real users around the world        466 million page measurements
                  Broadband connections only         200+ sites
Web Performance 101 - Gil Givati
Fragmented,        • Who is #1 today? Tomorrow?
rapidly-changing                                                      7
market             • Who is #1 with your customers?          6
                                                                  8



Different          • Number of parallel connections
operational        • JavaScript processing
characteristics    • Etc.

                                                       Browser
Processing         • Percentage of total
moving to the                                          Network
browser              response time
                                                       Infrastructure


                   • Performance
Major impact on    • Functionality
user experience
                   • Appearance
Web Performance 101 - Gil Givati
? ‫מה מודדים‬
                     ‫• בדיקות מבוססות זמן‬
                  Time to first byte •
          Time to first impression •
                            onLoad •
                 Fully loaded time •

‫• "ציוני תקן" המבוססים על מתודולוגיות ידועות‬
                      Yahoo! YSlow •
               Google Page Speed •
          dynaTrace AJAX edition •
 Minimize HTTP Requests                            Remove Duplicate Scripts
  Use a Content Delivery Network                    Configure ETags
  Add an Expires or a Cache-                        Make AJAX Cacheable
   Control Header
                                                     Use GET for AJAX Requests
  Gzip Components
                                                     Reduce the Number of DOM
  Put StyleSheets at the Top                         Elements
  Put Scripts at the Bottom                         No 404s
  Avoid CSS Expressions                             Reduce Cookie Size
  Make JavaScript and CSS                           Use Cookie-Free Domains for
   External                                           Components
  Reduce DNS Lookups                                Avoid Filters
  Minify JavaScript and CSS                         Do Not Scale Images in HTML
  Avoid Redirects                                   Make favicon.ico Small & Cacheable

http://developer.yahoo.com/yslow/help/#guidelines
 Avoid bad requests                                           Minimize redirects

   Avoid CSS expressions                                        Optimize images

   Combine external CSS                                         Optimize the order of styles and
                                                                  scripts
   Combine external JavaScript
                                                                 Parallelize downloads across
   Defer loading of JavaScript                                   hostnames
   Enable compression                                           Put CSS in the document head
   Leverage browser caching                                     Remove unused CSS
   Leverage proxy caching                                       Serve resources from a consistent
   Minify CSS                                                    URL

   Minify HTML                                                  Serve scaled images

   Minify JavaScript                                            Serve static content from a
                                                                  cookieless domain
   Minimize request size
                                                                 Specify a character set early
   Minimize DNS lookups
                                                                 Specify image dimensions
http://code.google.com/speed/page-speed/docs/rules_intro.html
                                                                 Use efficient CSS selectors
? ‫מה חשוב‬




http://www.httpArchive.org
? ‫מה חשוב‬




http://www.httpArchive.org
Web Performance 101 - Gil Givati
‫מהירות טעינה‬   ‫מספר בקשות‬   YSLOW ‫ציון‬   PS ‫ציון‬    ‫שם האתר‬


   2.258           4            94         77      Roninsight


   8.042           8            92         88      Roninsight
                                                        (WP)

   4.05           90            74         76        ionroad


  22.856          149           70         64          ELAL


   13.29          53            73         83          rompr
Web Performance 101 - Gil Givati
? ‫רוצים עוד‬
              Http KeepAlive   •
              Async JS Load    •
              DOM Elements     •
                       CDN     •
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
http://www.efficens-software.com/2011/07/understanding_waterfall_charts/
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Webmaster Tools           Google Analytics
 What is measured       Time from Initial Page Request to “Document
                                          Complete”
 How it’s measured      Google Toolbar       Navigation Timing + Google
                                                    Toolbar on IE
Browsers measured          Firefox 2-4                    IE 9+
                              IE 6-9                  Chrome 6+
                     with Google Toolbar &             Firefox 7+
                      PageRank Enabled                Android 4+
                                              IE 6-8 with Google Toolbar
   Sampling rate      All Clients (assumed)   1% of clients, max 10K/day

Averaging techniques 7-day running weighted     30-day simple average
                     average (popular pages     (average the individual
                          matter more)        page’s average load times(
https://developers.google.com/pagespeed/
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
‫על מה להסתכל ?‬
http://www.gomez.com/instant-test-pro/
What’s the #1
cause of slow
web pages?
JAVASCRIPT!
JavaScript performance
         directly
affects user experience
The browser UI thread is responsible for
both UI updates and JavaScript execution
           Only one can happen at a time
<button id="btn" style="font-size: 30px; padding: 0.5em
1em">Click Me</button>

<script type="text/javascript">
window.onload = function(){
   document.getElementById("btn").onclick = function(){
       //do something
   };
};
</script>
Before Click
UI Thread




time
                  UI Queue
When Clicked
UI Thread




time
                  UI Queue

                    UI Update

                    onclick

                    UI Update
When Clicked
UI Thread

 UI Update

time
                          UI Queue

                            onclick
        Draw down state
                            UI Update
When Clicked
UI Thread

 UI Update   onclick

time
                       UI Queue

                         UI Update
When Clicked
UI Thread

 UI Update   onclick       UI Update

time
                                       UI Queue


               Draw up state
No UI updates while
JavaScript is executing
Loadtime Techniques
Don't let JavaScript interfere with page load performance
<!doctype html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <p>Hello world!</p>
    <script src="foo.js"></script>
    <p>See ya!</p>
</body>
</html>
Result
UI Thread

 Hello world!   Download   Parse   Run   See ya!

time




  The UI thread needs to wait for the script to
  download, parse, and run before continuing
Translation:
The page doesn't render while
JavaScript is downloading,
parsing, or executing during
page load
Result
UI Thread

 JavaScript   UI Update   JavaScript   UI Update   JavaScript


time



  The more scripts to download in between UI
  updates, the longer the page takes to render
Technique #1: Load scripts
dynamically
Basic Technique
var script = document.createElement("script"),
    body;
script.type = "text/javascript";
script.src = "foo.js";
body.insertBefore(script, body.firstChild);




Dynamically loaded scripts are non-blocking
Downloads no longer block
the UI thread
Using Dynamic Scripts
UI Thread

 Hello world!   See ya!            Run   UI Update

time


                Download   Parse




Only code execution happens on the UI thread,
   which means less blocking of UI updates
function loadScript(url, callback){

var script = document.createElement("script"),
    body = document.body;
script.type = "text/javascript";

if (script.readyState){ //IE <= 8
    script.onreadystatechange = function(){
        if (script.readyState == "loaded" ||
                script.readyState == "complete"){
            script.onreadystatechange = null;
            callback();
        }
    };
} else { //Others
    script.onload = function(){
        callback();
    };
}

script.src = url;
body.insertBefore(script, body.firstChild);

}
Usage

loadScript("foo.js", function(){
      alert("Loaded!");
});
Timing Note:
Script execution begins
immediately after download
and parse – timing of
execution is not guaranteed
Technique #2: Defer scripts
<!doctype html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <p>Hello world!</p>
    <script defer src="foo.js"></script>
    <p>See ya!</p>
    <!-- even more markup -->
</body>
</html>
Support for <script defer>




3.5   7.0   5.0    4.0       ?
Deferred scripts begin to
download immediately,
but don't execute until all UI
updates complete
Using <script defer>
UI Thread

 Hello world!   See ya!    More UI   More UI   Run




time


                Download     Parse




   Similar to dynamic script nodes, but with a
    guarantee that execution will happen last
Timing Note:
   Although scripts always
   execute after UI updates
complete, the order of multiple
  <script defer> scripts is not
 guaranteed across browsers
Technique #3: Asynchronous
scripts
<!doctype html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <p>Hello world!</p>
    <script async src="foo.js"></script>
    <p>See ya!</p>
    <!-- even more markup -->
</body>
</html>
Support for <script async>




3.6   7.0   5.0    10    ?
Using <script async>
UI Thread

 Hello world!   See ya!            Run   UI Update

time


                Download   Parse




Download begins immediately and execution is
      slotted in at first available spot
Note:
Order of execution is explicitly
      not preserved for
   asynchronous scripts
Timers
//create a new timer and delay by 500ms
  setTimeout(function(){


      //code to execute here


  }, 500);




setTimeout() schedules a function
to be added to the UI queue after
a delay
Web Workers
Web Performance 101 - Gil Givati
Support for Web Workers




3.5   4.0   4.0   10 10.6
Web Workers
 Asynchronous JavaScript execution
 Execution happens outside the UI thread
    Doesn’t block UI updates
 Data-Driven API
    Data is serialized going into and out of the worker
    No access to DOM or BOM
    Separate execution environment
‫כלים - סיכום‬
 Google Page Speed Tools Family
       http://code.google.com/speed/page-speed/
 dynaTrace AJAX Edition
       http://ajax.dynatrace.com/ajax/en/
 Yahoo! YSlow
       http://developer.yahoo.com/yslow/
 WebPagetest
       http://www.webpagetest.org/
 Show Slow
        http://www.showslow.com/
 Let's Make the Web Faster
       http://code.google.com/intl/en-EN/speed/tools.html
 Books
    - High Performance Web Sites
    - Even Faster Web Sites
    - Website Optimization
    - Complete Web Monitoring
    -High Performance JavaScript
Web Performance 101 - Gil Givati
gil@efficens-software.com
       054-2552060
         @efficens

More Related Content

PDF
Performance automation 101 @LDNWebPerf MickMcGuinness
PDF
Seatwave Web Peformance Optimisation Case Study
PPTX
High Performance Mobile Web
PDF
Emakina Academy - 5 - Know your audience - Web Analytics
PDF
14 Tips For Faster Web Apps
PDF
Ajax World Fall08
PPTX
FastView acceleration overview
PDF
针对iPad平台的高性能网站架构
Performance automation 101 @LDNWebPerf MickMcGuinness
Seatwave Web Peformance Optimisation Case Study
High Performance Mobile Web
Emakina Academy - 5 - Know your audience - Web Analytics
14 Tips For Faster Web Apps
Ajax World Fall08
FastView acceleration overview
针对iPad平台的高性能网站架构

What's hot (19)

PDF
Progressive Enhancement 2.0 (Conference Agnostic)
PDF
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
PPTX
Belgrade when its just too slow
PPTX
Nantes when its just too slow
PDF
HTML5 APIs - Where No Man Has Gone Before - StarTechConf, Chile
PPTX
Hyper-V Dynamic Memory in Depth
PPTX
Performance Implications of Mobile Design
PPTX
Bca1931 final
PDF
Scaling Drupal: Not IF... HOW
PDF
High Performance Websites
PDF
Velocity 2012: The 90-Minute Mobile Optimization Life Cycle
PDF
[Challenge:Future] Chocoholic
PDF
Adaptive Web Design Workshop [inspire 2011]
PDF
[Infosecworld 08 Orlando] CSRF: The Biggest Little Vulnerability on the Web
PDF
Adaptive Web Design Workshop [Iceweb 2011]
PDF
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
PPTX
Front End page speed performance improvements for Drupal
PDF
Aptimize SharePoint Datasheet
PDF
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Progressive Enhancement 2.0 (Conference Agnostic)
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
Belgrade when its just too slow
Nantes when its just too slow
HTML5 APIs - Where No Man Has Gone Before - StarTechConf, Chile
Hyper-V Dynamic Memory in Depth
Performance Implications of Mobile Design
Bca1931 final
Scaling Drupal: Not IF... HOW
High Performance Websites
Velocity 2012: The 90-Minute Mobile Optimization Life Cycle
[Challenge:Future] Chocoholic
Adaptive Web Design Workshop [inspire 2011]
[Infosecworld 08 Orlando] CSRF: The Biggest Little Vulnerability on the Web
Adaptive Web Design Workshop [Iceweb 2011]
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
Front End page speed performance improvements for Drupal
Aptimize SharePoint Datasheet
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Ad

Viewers also liked (8)

PPT
3.1 natura si echilibrul sau
PPTX
龍骨王 研究到創業
PPT
3.3 inventii ce au_revolutionat_lumea2
PPT
Blogun Раскрутка и Заработок
PPTX
龍骨王中小企業演講 如何做好六分鐘創投演講1029
PPTX
龍骨王中小企業演講 如何做好六分鐘創投演講
PPT
Research process
PDF
Blood group association
3.1 natura si echilibrul sau
龍骨王 研究到創業
3.3 inventii ce au_revolutionat_lumea2
Blogun Раскрутка и Заработок
龍骨王中小企業演講 如何做好六分鐘創投演講1029
龍骨王中小企業演講 如何做好六分鐘創投演講
Research process
Blood group association
Ad

Similar to Web Performance 101 - Gil Givati (20)

PPTX
Web Performance 101
PPTX
A Lap Around Internet Explorer 8
PPT
Web前端性能分析工具导引
ODP
Cvcc performance tuning
PPTX
A Day Building Fast, Responsive, Extensible Single Page Applications
KEY
Speed is Essential for a Great Web Experience
PPT
Shopzilla - Performance By Design
PPT
ASPNET Roadmap
PDF
Making the web faster
PDF
Speed is Essential for a Great Web Experience (Canvas Conf Version)
PDF
The Mobile Web - HTML5 on mobile devices
PDF
SEO for Developers
PDF
Modern Web Applications
PDF
Performance Measurement and Monitoring for Salesforce Web & Mobile Apps
PDF
Template tuning for high performance
PDF
Coding the UI
PDF
Coding Ui
PDF
CTU June 2011 - Things that Every ASP.NET Developer Should Know
PPT
performance.ppt
PPTX
Javascript & Jquery
Web Performance 101
A Lap Around Internet Explorer 8
Web前端性能分析工具导引
Cvcc performance tuning
A Day Building Fast, Responsive, Extensible Single Page Applications
Speed is Essential for a Great Web Experience
Shopzilla - Performance By Design
ASPNET Roadmap
Making the web faster
Speed is Essential for a Great Web Experience (Canvas Conf Version)
The Mobile Web - HTML5 on mobile devices
SEO for Developers
Modern Web Applications
Performance Measurement and Monitoring for Salesforce Web & Mobile Apps
Template tuning for high performance
Coding the UI
Coding Ui
CTU June 2011 - Things that Every ASP.NET Developer Should Know
performance.ppt
Javascript & Jquery

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Encapsulation theory and applications.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
KodekX | Application Modernization Development
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Cloud computing and distributed systems.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation_ Review paper, used for researhc scholars
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Spectral efficient network and resource selection model in 5G networks
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Review of recent advances in non-invasive hemoglobin estimation
Encapsulation theory and applications.pdf
A Presentation on Artificial Intelligence
KodekX | Application Modernization Development
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Building Integrated photovoltaic BIPV_UPV.pdf
Cloud computing and distributed systems.
Diabetes mellitus diagnosis method based random forest with bat algorithm
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation

Web Performance 101 - Gil Givati

  • 2. ‫נעים להכיר ...‬ ‫‪ ‬חברה המתמחה במתן שירותים בתחום ניהול ביצועי מערכות‬ ‫בכלל ומערכות מבוססות דפדפן בפרט‬ ‫‪ ‬מנהלי ‪Israel Web Performance Optimization meetup‬‬ ‫‪ ‬נציגי, מטמיעי ומפתחי פתרונות תוכנה בתחומים:‬ ‫‪ ‬האצת אתרים‬ ‫‪ ‬ניטור ואיתור תקלות בזמן אמת‬ ‫‪www.efficens-software.com ‬‬ ‫‪Twitter: efficens ‬‬ ‫‪ :Facebook ‬אפיסנס סופטוור בע"מ‬ ‫‪http://www.meetup.com/wpo-il ‬‬
  • 3. ‫בתוכנית היום‬  What is Web Performance  How does Web Performance affects our bottom line  The web Performance building blocks  Knowing your audience: understanding Browser behaviors  Measuring Performance using YSlow and Google PageSpeed  Understanding Waterfalls  Working with WebPageTest  Working with DynaTrace Ajax Edition  JavaScript and you
  • 5. ‫"הזמן הנתפס על ידי המבקר באתר‬ ‫בין פעולה (כמו לחיצה) עד לתגובה‬ ‫משמעותית"‬ ‫‪Stephan Thair, Seriti consulting‬‬
  • 8. ‫איטיות והמוח שלנו‬ “Brain wave analysis from the experiment revealed that participants had to concentrate up to 50% more when using badly performing websites, while facial muscle and behavioural analysis of the subjects also revealed greater agitation and stress in these periods. http://www.ca.com/Files/SupportingPieces/final_webstr ess_survey_report_229296.pdf
  • 9. 10 Performanc e 5 improvemen 6 secs 8 secs 2 secs 4 secs t (seconds) 0 -5 -8% -10 -25% -15 -33% Percentage change in -20 -38% page abandonme -25 nt -30 -35 -40 urce: Gomez 2010 Study of 500 Million End-User Interactions Across 200+ Web Sites
  • 14. ‫מהם ביצועים טובים ?‬ ‫1.0 שניות נותן תחושה של תגובה מיידית‬ ‫‪‬‬ ‫1 שניה מונע הסחת דעת ומאפשרת רצף מחשבתי‬ ‫‪‬‬ ‫01 שניות שומרות על תשומת לב הגולש‬ ‫‪‬‬ ‫8 שניות הוא הזמן הממוצע שלוקח לגולש לקבל החלטה האם‬ ‫‪‬‬ ‫הוא נשאר בדף או עובר למקום אחר‬ ‫‪Jakob Neilsen. http://www.useit.com/alertbox/response-times.html‬‬
  • 18. Web performance anatomy Latency HTTP AJAX/XHR IE Firefox Chrome Browser Internet Server Safari Opera Images CSS JavaScript Cache Flash Parsing DNS 3rd-party Layouting Server servers Rendering
  • 19. ‫מרכיבי זמן התגובה‬ ‫קריטי ליישומי‬ ‫0.2 ‪Web‬‬ ‫‪Server side‬‬ ‫‪Content delivery‬‬ ‫‪Rendering‬‬ ‫מחוץ למסגרת המערכת אבל‬ ‫עדיין באחריותנו‬ ‫%09-08 מהזמן נצרך מחוץ לגבולות השרת‬ ‫91‬
  • 22. ‫הורדת ‪ 200KB‬בקווי‬ ‫‪1.5Mb/Sec‬‬ ‫אורכת כשנייה‬
  • 23. ‫לא הבטיחו לנו ממשק אחיד, פשוט ורזה ?‬
  • 24. It’s a Multi-Browser World: Different for Each Customer Base Source: http://arstechnica.com/web/news/2011/02/chrome-takes-10-usage-share-ie-continues-to-haemorrhage.ars; http://gs.statcounter.com/#browser_version-ww-monthly-201001-201101
  • 25. Load Time Perceived Render 25 20 15 Seconds 10 5 0 Source: Gomez Real-User Monitoring Real users around the world 466 million page measurements Broadband connections only 200+ sites
  • 27. Fragmented, • Who is #1 today? Tomorrow? rapidly-changing 7 market • Who is #1 with your customers? 6 8 Different • Number of parallel connections operational • JavaScript processing characteristics • Etc.  Browser Processing • Percentage of total moving to the  Network browser response time  Infrastructure • Performance Major impact on • Functionality user experience • Appearance
  • 29. ? ‫מה מודדים‬ ‫• בדיקות מבוססות זמן‬ Time to first byte • Time to first impression • onLoad • Fully loaded time • ‫• "ציוני תקן" המבוססים על מתודולוגיות ידועות‬ Yahoo! YSlow • Google Page Speed • dynaTrace AJAX edition •
  • 30.  Minimize HTTP Requests  Remove Duplicate Scripts  Use a Content Delivery Network  Configure ETags  Add an Expires or a Cache-  Make AJAX Cacheable Control Header  Use GET for AJAX Requests  Gzip Components  Reduce the Number of DOM  Put StyleSheets at the Top Elements  Put Scripts at the Bottom  No 404s  Avoid CSS Expressions  Reduce Cookie Size  Make JavaScript and CSS  Use Cookie-Free Domains for External Components  Reduce DNS Lookups  Avoid Filters  Minify JavaScript and CSS  Do Not Scale Images in HTML  Avoid Redirects  Make favicon.ico Small & Cacheable http://developer.yahoo.com/yslow/help/#guidelines
  • 31.  Avoid bad requests  Minimize redirects  Avoid CSS expressions  Optimize images  Combine external CSS  Optimize the order of styles and scripts  Combine external JavaScript  Parallelize downloads across  Defer loading of JavaScript hostnames  Enable compression  Put CSS in the document head  Leverage browser caching  Remove unused CSS  Leverage proxy caching  Serve resources from a consistent  Minify CSS URL  Minify HTML  Serve scaled images  Minify JavaScript  Serve static content from a cookieless domain  Minimize request size  Specify a character set early  Minimize DNS lookups  Specify image dimensions http://code.google.com/speed/page-speed/docs/rules_intro.html  Use efficient CSS selectors
  • 35. ‫מהירות טעינה‬ ‫מספר בקשות‬ YSLOW ‫ציון‬ PS ‫ציון‬ ‫שם האתר‬ 2.258 4 94 77 Roninsight 8.042 8 92 88 Roninsight (WP) 4.05 90 74 76 ionroad 22.856 149 70 64 ELAL 13.29 53 73 83 rompr
  • 37. ? ‫רוצים עוד‬ Http KeepAlive • Async JS Load • DOM Elements • CDN •
  • 52. Webmaster Tools Google Analytics What is measured Time from Initial Page Request to “Document Complete” How it’s measured Google Toolbar Navigation Timing + Google Toolbar on IE Browsers measured Firefox 2-4 IE 9+ IE 6-9 Chrome 6+ with Google Toolbar & Firefox 7+ PageRank Enabled Android 4+ IE 6-8 with Google Toolbar Sampling rate All Clients (assumed) 1% of clients, max 10K/day Averaging techniques 7-day running weighted 30-day simple average average (popular pages (average the individual matter more) page’s average load times(
  • 59. What’s the #1 cause of slow web pages?
  • 61. JavaScript performance directly affects user experience
  • 62. The browser UI thread is responsible for both UI updates and JavaScript execution Only one can happen at a time
  • 63. <button id="btn" style="font-size: 30px; padding: 0.5em 1em">Click Me</button> <script type="text/javascript"> window.onload = function(){ document.getElementById("btn").onclick = function(){ //do something }; }; </script>
  • 65. When Clicked UI Thread time UI Queue UI Update onclick UI Update
  • 66. When Clicked UI Thread UI Update time UI Queue onclick Draw down state UI Update
  • 67. When Clicked UI Thread UI Update onclick time UI Queue UI Update
  • 68. When Clicked UI Thread UI Update onclick UI Update time UI Queue Draw up state
  • 69. No UI updates while JavaScript is executing
  • 70. Loadtime Techniques Don't let JavaScript interfere with page load performance
  • 71. <!doctype html> <html> <head> <title>Example</title> </head> <body> <p>Hello world!</p> <script src="foo.js"></script> <p>See ya!</p> </body> </html>
  • 72. Result UI Thread Hello world! Download Parse Run See ya! time The UI thread needs to wait for the script to download, parse, and run before continuing
  • 73. Translation: The page doesn't render while JavaScript is downloading, parsing, or executing during page load
  • 74. Result UI Thread JavaScript UI Update JavaScript UI Update JavaScript time The more scripts to download in between UI updates, the longer the page takes to render
  • 75. Technique #1: Load scripts dynamically
  • 76. Basic Technique var script = document.createElement("script"), body; script.type = "text/javascript"; script.src = "foo.js"; body.insertBefore(script, body.firstChild); Dynamically loaded scripts are non-blocking
  • 77. Downloads no longer block the UI thread
  • 78. Using Dynamic Scripts UI Thread Hello world! See ya! Run UI Update time Download Parse Only code execution happens on the UI thread, which means less blocking of UI updates
  • 79. function loadScript(url, callback){ var script = document.createElement("script"), body = document.body; script.type = "text/javascript"; if (script.readyState){ //IE <= 8 script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { //Others script.onload = function(){ callback(); }; } script.src = url; body.insertBefore(script, body.firstChild); }
  • 80. Usage loadScript("foo.js", function(){ alert("Loaded!"); });
  • 81. Timing Note: Script execution begins immediately after download and parse – timing of execution is not guaranteed
  • 83. <!doctype html> <html> <head> <title>Example</title> </head> <body> <p>Hello world!</p> <script defer src="foo.js"></script> <p>See ya!</p> <!-- even more markup --> </body> </html>
  • 84. Support for <script defer> 3.5 7.0 5.0 4.0 ?
  • 85. Deferred scripts begin to download immediately, but don't execute until all UI updates complete
  • 86. Using <script defer> UI Thread Hello world! See ya! More UI More UI Run time Download Parse Similar to dynamic script nodes, but with a guarantee that execution will happen last
  • 87. Timing Note: Although scripts always execute after UI updates complete, the order of multiple <script defer> scripts is not guaranteed across browsers
  • 89. <!doctype html> <html> <head> <title>Example</title> </head> <body> <p>Hello world!</p> <script async src="foo.js"></script> <p>See ya!</p> <!-- even more markup --> </body> </html>
  • 90. Support for <script async> 3.6 7.0 5.0 10 ?
  • 91. Using <script async> UI Thread Hello world! See ya! Run UI Update time Download Parse Download begins immediately and execution is slotted in at first available spot
  • 92. Note: Order of execution is explicitly not preserved for asynchronous scripts
  • 94. //create a new timer and delay by 500ms setTimeout(function(){ //code to execute here }, 500); setTimeout() schedules a function to be added to the UI queue after a delay
  • 97. Support for Web Workers 3.5 4.0 4.0 10 10.6
  • 98. Web Workers  Asynchronous JavaScript execution  Execution happens outside the UI thread  Doesn’t block UI updates  Data-Driven API  Data is serialized going into and out of the worker  No access to DOM or BOM  Separate execution environment
  • 99. ‫כלים - סיכום‬  Google Page Speed Tools Family http://code.google.com/speed/page-speed/  dynaTrace AJAX Edition http://ajax.dynatrace.com/ajax/en/  Yahoo! YSlow http://developer.yahoo.com/yslow/  WebPagetest http://www.webpagetest.org/  Show Slow http://www.showslow.com/  Let's Make the Web Faster http://code.google.com/intl/en-EN/speed/tools.html
  • 100.  Books - High Performance Web Sites - Even Faster Web Sites - Website Optimization - Complete Web Monitoring -High Performance JavaScript
  • 102. gil@efficens-software.com 054-2552060 @efficens