SlideShare a Scribd company logo
1 of 206
Download to read offline
The 90-Minute Mobile Optimization Life Cycle

                 Velocity 2012




                    Hooman Beheshti
               VP Technology, Strangeloop
            hooman@strangeloopnetworks.com
Agenda

•  Why is faster better?
•  Measuring performance
         –  Tools
         –  Challenges
•  Stepwise acceleration
         –  Pick a real site, and apply step by step performance
            optimizations
•  Lessons from the field




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   2
Mobile Performance Optimization
Why Should We Care?
Growth of Smartphone Sales
(as % of total mobile phone sales)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   4
Traffic from Mobile Devices (2011)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   5
Mobile Sales




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   6
Case Study




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   7
Customer Profile

•     Top 200 Internet retailer, US based
•     Target geography: US and Europe
•     $3B in revenue
•     30,000 employees




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   8
Page Views by Mobile Device




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   9
Experiment

•  Induce delay on HTML
         –  200msec, 500msec, 1000msec


•  Apply to small percentage of traffic

•  12 weeks

•  Monitor impact on key business metrics



© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   10
Results




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   11
Impact on Bounce Rate




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   12
Impact on Returning Visitors




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   13
More Details

•  http://www.webperformancetoday.com/
   2011/11/23/case-study-slow-page-load-mobile-
   business-metrics/

•  http://velocityconf.com/velocityeu/public/
   schedule/detail/21632




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   14
Performance Measurement
Measuring Page Speed on Mobile Devices
Measurement

•  Mobile measurement is still a challenge
•  There are some tools out there
         –  Still pretty manual
         –  Less about performance and more about functionality
         –  Lots of simulation
•  More complicated because of the number of
   different platforms and devices that we may
   need to cover
•  Things are getting better


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   16
Chrome Remote Debugging (ICS)

•  A USB connection lets us see activity of mobile
   chrome on desktop chrome
•  https://developers.google.com/chrome/mobile/
   docs/debugging




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   17
iWebInspector

•  Web Inspector, but for iOS Simulator
•  http://www.iwebinspector.com/




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   18
Weinre (Web Inspector Remote)

•  Remote debugging from the desktop for what
   the phone is doing
•  http://people.apache.org/~pmuellr/weinre/docs/
   latest/Home.html




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   19
Aardwolf

•  Remote JavaScript debugging (all platforms)
•  http://lexandera.com/aardwolf/




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   20
Mobile Perf Bookmarklet

•  More focus on performance

•  http://stevesouders.com/
   mobileperf/mobileperfbkm.php

•  Super bookmarklet with lots of
   tools built in




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   21
PCAP2HAR

•  Turn packet captures to waterfalls
•  http://pcapperf.appspot.com/




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   22
Real User Monitoring (RUM)

•  RUM tools are increasing in availability
         –  Google Analytics
         –  New companies and solutions emerging

•  Measurement on actual devices, for real users

•  Need lots of data to draw conclusions
         –  And must have a way to deal with outliers

•  Navigation Timing (only in Chrome for Android
   right now)

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   23
Webpagetest




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   24
Webpagetest’s Mobile Agent

•  Based on the recently open-sourced mobitest
   agent
•  Interacts with the server just like a standard
   desktop agent
•  Available for Android and iOS
         –  Still in the early stages, but key metrics are reported
         –  Some features (like scripting) don’t work
         –  Cold cache tests and videos are working fine
         –  For iOS, it uses UIWebView rather than Safari
•  Even with the limitations, still the best tool for
   getting a feel for mobile performance

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   25
Visualizing Performance




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   26
Visualizing Performance




                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.   27
Visualizing Performance




                                                                                 DNS            TTFB




                                                                                      TCP          Download
                                                                                   Connection




                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.                            28
Visualizing Performance




                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.   29
Visualizing Performance
                                                                       Back End: The time from when the
                                                                       request is made by the browser to
                                                                       last byte of the HTML response




                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.                         30
Visualizing Performance
                                                                       Back End: The time from when the
                                                                       request is made by the browser to
                                                                       last byte of the HTML response


                                                                       Front End: Everything after the
                                                                       HTML arrives




                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.                           31
Visualizing Performance
                                                                       Back End: The time from when the
                                                                       request is made by the browser to
                                                                       last byte of the HTML response


                                                                       Front End: Everything after the
                                                                       HTML arrives




                                                                                 Important Timers:

                                                                                 Start Render

                                                                                 onLoad (Document Complete)
                       0      6                            12
© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.                            32
Stepwise Acceleration
Accelerating a Real Site
Methodology




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   34
Setup

•  All testing done on 3G from Vancouver
         –  Nexus S with WPT agent
         –  Rogers Network


•  Traffic flows through Strangeloop
   service
         –  We apply optimizations in the path
         –  Used host file entries since DNS overwrite
            isn’t available on the agent


•  The phone does everything else

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   35
Setup
                              3G Connection




                                                                                         Origin
                                                                                         Origin
                                                                                       Data Center




© 2010 Strangeloop Networks             Strangeloop. Faster Websites. Automatically.                 36
Cooking Show Methodology




*No tiger blood was used during any of these tests!




 © 2010 Strangeloop Networks                          Strangeloop. Faster Websites. Automatically.   37
Let’s Pick a Site!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   38
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   39
A Few Points of Clarification

•  We’re only choosing oreilly.com for fun
•  We’re using it only to show what some
   performance problems are – this doesn’t mean
   the site has these problems
•  The real site is somewhere in the middle of this
   blue bar




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   40
Waterfall and Key Performance Metrics




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   41
Per Object Breakdown (partial)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   42
Content Breakdown




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   43
Problem Analysis




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   44
Performance Problems

•  Too many connections




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   45
Too Many Connections




          83 Connections




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   46
Connection Cost is High




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   47
Performance Problems

•  Too many connections
•  Too many bytes




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   48
Too Many Bytes




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   49
Performance Problems

•  Too many connections
•  Too many bytes
•  No CDN




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   50
Too Long to First Byte




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   51
Time to First Byte

•  Every request is subjected to one round trip

•  Concurrency of requests helps, as does
   pipelining – but it’s still a problem
         –  More on pipelining later


•  A bigger problem when there are more objects




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   52
Performance Problems

•     Too many connections
•     Too many bytes
•     No CDN
•     Too many round trips




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   53
Too Many Round Trips




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   54
Too Many Round Trips

•  Every request is still paying a penalty
         –  TTFB continues to be a problem


•  The higher the latency, the bigger the problem

•  Better concurrency on modern mobile browsers
   is helping, but not enough. This is still a huge
   problem




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   55
Performance Problems

•     Too many connections
•     Too many bytes
•     No CDN
•     Too many round trips
•     Poor caching (more on this later)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   56
Performance Problems

•     Too many connections
•     Too many bytes
•     No CDN
•     Too many round trips
•     Poor caching (more on this later)
•     3rd party calls (marketing tags, analytics, etc)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   57
3rd party




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   58
3rd party




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   59
3rd party

                              Before Start Render




© 2010 Strangeloop Networks     Strangeloop. Faster Websites. Automatically.   60
Performance Problems

•     Too many connections
•     Too many bytes
•     No CDN
•     Too many round trips
•     Poor caching (more on this later)
•     3rd party calls (marketing tags, analytics, etc)

è Similar to desktop, but impact is different on
mobile devices

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   61
What Does it Look Like?




                       http://www.youtube.com/watch?v=jo4zxzv3USg




© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.   62
Summary of Key Metrics




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   63
Key Metrics – Original Site
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7
  6
                                                                            15
  5
  4                                                                         10
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          64
Let’s Fix It!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   65
What Are We Going To Do?

•  Stepwise acceleration
         –  We’ll accelerate the page in multiple steps
         –  We’ll add techniques at each step and evaluate the
            performance impact


•  We’ll start with the easy stuff and get more
   advanced with each step

•  Try to make the page as fast as possible


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   66
Step1: Low Hanging Fruit




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   67
Step 1: Optimizations

•  Add keep-alive connections
         –  Address the problem with too many connections
         –  Lessen the impact of TCP connection setup


•  Add HTTP compression
         –  One way to reduce bytes, and an easy one
         –  We’ll compress text-based content (HTML, CSS, JS,
            etc)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   68
Keep-alive Connections




                                                           83 Connections




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   69
HTTP Compression




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   70
Step 1: What Should We Expect

•  Fewer total connections
•  Fewer bytes
•  Impact to performance metrics
         –  Fewer bytes to onload
         –  No change to roundtrips
         –  Better document complete time
         –  Better start render




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   71
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   72
Before and After




                              20.52 sec                                                  15.29 sec




© 2010 Strangeloop Networks               Strangeloop. Faster Websites. Automatically.               73
What We Helped

•  Connection Count
         –  83 connection à 30 connection


•  Key metrics




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   74
Step 1: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7
  6
                                                                            15
  5
  4                                                                         10
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          75
Step 1: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900                             945
80                                                                       800
70
                                                                                                         218
                                                                         700
60                                                                       600
50                                                                       500              23 %           727
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8                                 7.738                                                                20.52
                                                                            20
  7
                                    0.679                                                                5.231
  6
                                                                            15
  5
  4               ~9%               7.059                                   10             25 %          15.289
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          76
What Does it Look Like?




                       http://www.youtube.com/watch?v=qMGAOqQQqvw




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   77
Pros and Cons

•  Pros
         –  Really easy to do
         –  Usually a single configuration option on servers,
            proxies, or load balancers
         –  Great bang for the buck


•  Cons
         –  It’s still slow!
         –  These are, by themselves, just not enough




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   78
Step 2: CDN




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   79
CDN




                                                                       Edge Cache
                                 Edge Cache




                                                                                      Origin
                                                                                      Origin
                              Edge Cache                                            Data Center



                                                    Edge Cache




© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.                 80
CDN

•  Static resources are served from locations near
   the requesting client (mobile or otherwise)
•  Shorter distance between client and content
   means smaller TTFB




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   81
What Should We Expect

•  Faster average time to first byte for the objects
   on the page
•  Impact to performance metrics
         –  No change to round trips
         –  No change to byte count
         –  Better start render time
         –  Better document complete time




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   82
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   83
Before and After




                       15.29 sec                                                  13.7 sec




© 2010 Strangeloop Networks        Strangeloop. Faster Websites. Automatically.              84
Impact on TTFB




                                              -39.8 %




                              Avg = 655 ms                                          Avg = 394 ms

© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.        85
What We Helped




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   86
Step 2: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7
  6
                                                                            15
  5
  4                                                                         10
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          87
Step 2: Improvements
                       Round trips to onload                                                      Bytes to onload (KB)
100                                                                      1000
90                                                                        900
80                                                                        800
70                                                                        700
60                                                                        600
50                                                                        500
40                                                                        400
30                                                                        300
20                                                                        200
10                                                                        100
 0                                                                           0


                             Start Render (sec)                                                    Doc Complete (sec)
  9                                                                          25

  8                                        7.059                                                                  15.289
                                                                             20
  7
                                           0.814                                                                   1.552
  6
                                                                             15
  5
  4
                                    12%    6.245                             10                       10 %        13.737
  3
  2                                                                            5
  1
  0                                                                            0
      © 2010 Strangeloop Networks                  Strangeloop. Faster Websites. Automatically.                            88
What Does it Look Like?




                       http://www.youtube.com/watch?v=aiViEjuVb_g




© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.   89
Pros and Cons

•  Pros
         –  CDNs are always good ways to reduce TTFB
         –  Physics!
         –  Well-established industry; lots and lots of vendors


•  Cons
         –  Can sometimes be costly
         –  Why wasn’t it faster?




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   90
CDNs for Mobile

•  We got faster, but we expected more of an
   improvement
         –  Before: we forced requests to go from west
            coast to east coast
         –  After: let the CDNs naturally select closest edge


•  Wondering out loud…
         –  Is edge selection for mobile devices not as
            effective?
         –  3G more of a mystery than WiFi


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   91
CDN Edge Selection - Desktop




                                                                         Edge Cache
                                   Edge Cache
                       DNS
                     Resolver



                                     CDN DNS Brains

                                                                                        Origin
                                                                                        Origin
                                Edge Cache                                            Data Center



                                                      Edge Cache




© 2010 Strangeloop Networks            Strangeloop. Faster Websites. Automatically.                 92
CDN Edge Selection – Mobile Network




                            DNS                                               Edge Cache
                          Resolver      Edge Cache




                              ?           CDN DNS Brains

                                                                                             Origin
                                                                                             Origin
                                     Edge Cache                                            Data Center



                                                           Edge Cache
                         DNS
                       Resolver




© 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                 93
CDN Edge Selection – Mobile Networks

•  I have no idea how the inside of the cell
   networks work!

•  Test:
         –  From the phone (on 3G) ping 2 CDN names
         –  From the phone, ping the IP address the CDN
            resolved for my desktop




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   94
CDN Edge Selection – Mobile Networks

                              CDN 1




                                                                             CDN 2




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.     95
CDN Edge Selection – Mobile Networks
Both pings from phone
                                    CDN 1

                                                                          Ping cdn.domain.com




                                                                                     Both pings from phone
                                                                                                CDN 2




      Ping IP that CDN picked for
                desktop
    © 2010 Strangeloop Networks     Strangeloop. Faster Websites. Automatically.                    96
HERESY!!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   97
Important Questions To Ask

•  Not making outrageous claims like “CDNs aren’t
   effective for mobile devices”!!

•  CDNs almost surely deploy servers near cell
   network exit points. But, what if most of the
   latency is inside the cell network?

•  Does the meaning for “closeness” change for
   mobile?

•  More research is necessary…

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   98
Step 3: Mobile Front End Optimization




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   99
Mobile FEO

•  Consolidation of resources
         –  Images
         –  CSS
         –  JavaScript
•  Image Compression
•  Minification
         –  JavaScript
         –  CSS
•  Optimal use of localStorage (more on this later)


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   100
Mobile FEO




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   101
What Should We Expect

•  Fewer round trips will mean the TTFB problem
   should get a lot better
•  Fewer bytes will mean better performance
         –  Images (from image compression)
         –  CSS/JS (from minification)
•  Impact to performance metrics
         –  Reduction in round trips
         –  Reduction in byte count (on top of HTTP
            Compression)
         –  Better start render time
         –  Better document complete time

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   102
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   103
Before and After




                                                                                9.47 sec


                      13.7 sec




© 2010 Strangeloop Networks      Strangeloop. Faster Websites. Automatically.              104
What We Helped




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   105
Step 3: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7
  6
                                                                            15
  5
  4                                                                         10
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          106
Step 3: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800                                            727
70
                                                        92
                                                                         700
60                                                                       600                                            310
                                                        64
50                                                                       500
40                                                                       400
30                                                                       300
                                                                                                                        417
                                                        28
20                                                                       200
10                                    70 %                               100                                 43%
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7                                                  6.245                                                              13.737
  6
                                                     2.589                  15                                          4.260
  5
  4                                                                         10
  3
                                                     3.656                                                              9.477
  2                                                                           5
  1                                    41%                                                                   31 %
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                                107
What Does it Look Like?




                       http://www.youtube.com/watch?v=J_gU2Z_b-6I




© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.   108
Pros and Cons

•  Pros
         –  Noticeable and significant benefit over easier
            techniques
         –  The mobile form factor lets us be more aggressive
            with some of the techniques
         –  Smart use of localStorage


•  Cons
         –  It’s not easy!
         –  Techniques must survive site changes (regression)


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   109
Step 4: More Mobile FEO




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   110
More Mobile FEO

•  Deferral
         –  Analytics
         –  Marketing tags
         –  Ads
         –  Etc




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   111
3rd Party Calls




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   112
3rd Party Calls




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   113
What Should We Expect

•  Deferral of round trips to after onload

•  Impact to performance metrics
         –  Fewer round trips to onload
         –  Fewer bytes to onload
         –  Better start render time
         –  Better document complete time




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   114
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   115
Before and After




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   116
Before and After




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   117
Before and After




                                                                                2.2
                                                                                sec
            3.6 sec




                      9.47 sec                                                  5.56 sec




© 2010 Strangeloop Networks      Strangeloop. Faster Websites. Automatically.              118
What We Helped




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   119
Step 4: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
40                                                                       400
30                                                                       300
20                                                                       200
10                                                                       100
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8
                                                                            20
  7
  6
                                                                            15
  5
  4                                                                         10
  3
  2                                                                           5
  1
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                          120
Step 4: Improvements
                       Round trips to onload                                                     Bytes to onload (KB)
100                                                                     1000
90
                                              64 %                       900
                                                                                                                        34 %
80                                                                       800
70                                                                       700
60                                                                       600
50                                                                       500
                                     28                                                                    417
40                                                                       400
30                                   18                                  300                               142
20                                                                       200
10                                                                       100
                                     10                                                                    275
 0                                                                          0


                             Start Render (sec)                                                   Doc Complete (sec)
  9                                                                         25

  8                                               41%                                                                   41 %
                                                                            20
  7
  6
                                                                            15
  5
  4                                   3.656                                                                9.477
                                                                            10
  3                                                                                                         3.92
                                      1.493
  2                                                                           5
  1
                                      2.163                                                                5.557
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                                 121
What Does it Look Like?




                       http://www.youtube.com/watch?v=e0oFr0pSRn8




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   122
Pros and Cons

•  Pros
         –  Gives you the control that your marketing team may
            have given away!
         –  Solves a very difficult problem, resulting in
            improvements to all key metrics
         –  Much better visual experience


•  Cons
         –  Again, not easy!
         –  Must understand what the purpose of each 3rd party
            call is

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   123
Quick Summary of Stepwise Acceleration




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   124
Overall Improvements

  Original



Keep-alive /
Compression



     CDN



Mobile FEO 1




Mobile FEO 2


 © 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   125
Overall Improvements
                       Round trips to onload                                                      Bytes to onload (KB)
100                                                                     1000
90                                                                       900
80
                                          89 %                                                                   71 %
                                                                         800
70                                                                       700
60                                                                       600
50                      93                                               500                     945
40                                                                       400
30                      83                                                                       670
                                                                         300
20                                                                       200
10                                                                       100
                       10                                                                        275
 0                                                                          0


                             Start Render (sec)                                                     Doc Complete (sec)
  9                                                                         25



                                          72 %
  8
  7
                                                                            20
                                                                                                                  73 %
  6
                                                                            15
  5
                      7.738                                                                      20.52
  4                                                                         10
  3                   5.575                                                                      14.963
  2                                                                           5
  1
                     2.163                                                                       5.557
  0                                                                           0
      © 2010 Strangeloop Networks                 Strangeloop. Faster Websites. Automatically.                           126
Mobile Caching




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   127
Stating The Obvious




                              Caching is Good!!!



© 2010 Strangeloop Networks       Strangeloop. Faster Websites. Automatically.   128
First View of a Page




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   129
Repeat View with Terrible Caching




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   130
Repeat View with Validations Only




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   131
Repeat View with Good Caching




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   132
Mobile Caching

•  The primary issues with mobile caching:
         –  where to put the objects
         –  the size of the cache
•  Some good reading
         –  Device Cache Sizes
                  •  Wink toolkit study: http://www.winktoolkit.org/blog/204/
                  •  YUI study:
                     http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/
                  •  Blaze study:
                     http://www.guypo.com/mobile/understanding-mobile-cache-sizes/
         –  Individual Files
                  •  Steve Souders:
                     http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/
                  •  More from YUI:
                     http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits-
                     revisited/


© 2010 Strangeloop Networks            Strangeloop. Faster Websites. Automatically.    133
Mobile Cache Sizes

•  Cache sizes are much smaller than desktop
         –  Android (2.x) about 5-7MB
         –  iOS is larger (>50MB)
•  We need to think about:
         –  Total cache size limit
         –  Individual object size limit
         –  HTML pages
•  User behavior may affect what’s served from
   cache
•  Things are getting better, but not at the pace we
   want

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   134
Some More Findings

•  Android:
         –  Firefox and Opera (Gingerbread): ~10MB
         –  Stock browser in ICS: 25MB
         –  Chrome on ICS: much larger and based on amount of
            space available
                  •  http://gent.ilcore.com/2012/02/chrome-fast-for-android.html


•  Android and iOS
         –  When there’s room available, saw aggressive caching
            behavior


© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   135
Comparison to Desktop

•  IE
         –  http://blogs.msdn.com/b/ie/archive/2011/03/17/internet-
            explorer-9-network-performance-improvements.aspx
         –  Defaults
                  •  IE 6/7/8 à 1/32 of disk, cap of 50MB
                  •  IE9 à 1/256 of disk (bigger disks), cap of 250MB
•  Chrome
         –  Spot checked: >300MB
•  Firefox
         –  Spot checked: >700MB
•  From Steve: http://stevesouders.com/cache.php


© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.   136
HTML5 localStorage

•  W3C’s Web Storage Spec:
         –  http://dev.w3.org/html5/webstorage/
•  Per domain storage
         –  Key/value pairs
         –  ~2.5MB
         –  Test it:
            http://dev-test.nemikor.com/web-storage/support-
            test/
•  Programmable
         –  It can be used for whatever you want
         –  This includes acting as a programmable object cache!

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   137
Bing’s Use of localStorage




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   138
localStorage as a Cache

•  It gives us new space, not shared, to use for
   caching

•  It’s programmable and scriptable, something
   we’ve never had with HTTP object caches

•  Typically good for caching CSS and JavaScript,
   especially those used site-wide

•  Could also be used for small images
         –  Using DataURI format for images

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   139
A Little Bonus!
Maybe there’s another site we can accelerate…
Velocityconf.com




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   141
Waterfall and Key Performance Metrics




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   142
What Does it Look Like?




                       http://www.youtube.com/watch?v=hsQnkIPTgo4




© 2010 Strangeloop Networks          Strangeloop. Faster Websites. Automatically.   143
Further Analysis




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   144
Further Analysis




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   145
Functional Acceleration

•  Most images are not in the immediate viewport

•  Lots of round trips blocking start render

•  This time, we’ll accelerate with an eye towards:
         –  Improving start render time
         –  Making the page available quicker




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   146
Step 1: Deferral




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   147
Deferral

•  Let’s defer:
         –  3rd party calls (like before)
         –  Images not in the viewport


•  Also basic Mobile FEO
         –  Image compression and minification
         –  Some consolidation of CSS and JavaScript

•  What should we expect
         –  Better start render time
         –  Better document complete time
         –  Better visual response – snappier page


© 2010 Strangeloop Networks    Strangeloop. Faster Websites. Automatically.   148
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   149
Before and After




                                                                                   2.1
                  6.2 sec                                                          sec




                        12.61 sec                                                  4.7 sec




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.             150
Before and After




                                                                                   2.1
                  6.2 sec                                                          sec




                        12.61 sec                                                  4.7 sec




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.             151
What We Helped




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   152
What Does it Look Like?




                       http://www.youtube.com/watch?v=XD6QkP0bNak




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   153
Step 2: Less Deferral?




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   154
Let’s Look at the Page Again

                              Visible




                              Deferred
                              Images




© 2010 Strangeloop Networks              Strangeloop. Faster Websites. Automatically.   155
Let’s Look at the Page Again

                              Visible




                                         Make more images
                                          available before
                                               onload




                              Deferred
                              Images




© 2010 Strangeloop Networks                Strangeloop. Faster Websites. Automatically.   156
Defer less images

•  Let’s not defer one
   scroll of images
         –  User can scroll faster and
            still have the next
            screen’s images available


•  If the visual response is
   just as fast, then this is
   a good option if we
   expect people to scroll
   on our site right away

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   157
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   158
Before and After




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   159
Before and After




                                                                             2.18
                   2.1                                                       sec
                   sec




                    4.7 sec                                                   5.3 sec




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.              160
What Does it Look Like?




                       http://www.youtube.com/watch?v=eLmzd8A7RbA




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   161
It’s Not Always About Every Metric!

•  Visually, we’re about the same as full image
   deferral, but 4 images are available 2 seconds
   earlier

•  Some of this can be done programmatically –
   dynamic decisions made by the browser
         –  Figure out coordinates for image; choose to download
            now or later




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   162
Step 3: One Last Thing




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   163
One Last Thing




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   164
One Last Thing




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   165
One Last Thing




                                                                             200
                                                                             msec




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.          166
One Last Thing




                                                                             200
                                                                             msec



                                                                                    775
                                                                                    msec




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.                 167
Cache the HTML

•  Cache the HTML base page itself
         –  Somewhere in front of the server, before the browser
         –  In this case, it’s a feature of the service


•  Eliminate server processing time
         –  Serve the HTML faster
         –  Improve TTFB of the page and all other performance
            metrics




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   168
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   169
Before and After




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   170
Before and After




                                                            775
                                                            msec




                                                             236
                                                             msec




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   171
Before and After



             2.18                                                            1.78
             sec                                                             sec




              5.3 sec                                                        3.2 sec




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.             172
What Does it Look Like?




                       http://www.youtube.com/watch?v=gQgsxDiWqLQ




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   173
HTML Caching

•  HTML is typically dynamic
         –  It can be static for short periods of time (the velocity
            home page is a good example)
         –  Some technologies allow fragmentation of the page
            into static and dynamic portions
•  HTML can be user-agent specific
         –  For velocity’s home page, the same URL generates
            different pages depending on the browser
•  With HTML Caching, we need extra smarts:
         –  Granular expiration
         –  Browser aware
         –  Careful with personalized content

© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   174
We Covered Everything, right?
Not Quite…
Not Done Yet

•  We may have made these 2 pages faster, but
   there’s a lot more to mobile optimization

•  Performance is not only about pages
         –  We should always think about the site


•  Optimizations should include operational
   improvements specific to mobile devices




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   176
Site-wide Optimizations - flows




                              Actual User Interaction




© 2010 Strangeloop Networks        Strangeloop. Faster Websites. Automatically.   177
More Performance Optimizations

•  Converting click events to touch events
         –  Can save up to 500msec per event
•  Smart use of localStorage
         –  Versioning
         –  Dynamic decisions based on state of localStorage
•  Redirect suppression
         –  Sites that initially redirect to mobile version incur a
            costly roundtrip
•  3G vs WiFi
         –  navigator.connection.type – Android only for
            now
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   178
Operational and Other Optimizations

•  Hiding the URL bar
•  Smart image loading for pinch to zoom
         –  Automatically detect pinch and grab higher resolution
            image
•  Viewport optimizations
         –  E.g. Automatic detection of viewport
•  Mobile meta tags
•  Great presentation from Max Firtman:
         –  http://velocityconf.com/velocity2011/public/schedule/
            detail/19976


© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   179
Lessons Learned From The Field
Things you should know about mobile devices
More on Mobile Cache Behavior




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   181
Mobile Cache Behavior
    User                                                                                                       With Last-Modified
                          Device              No Cache Headers*               With Last-Modified*                                          With max-age*
   Action                                                                                                        and max-age*
                  Android (Nexus S, v2.3.7)         All from cache                   All from cache                 All from cache            All from cache
 New window
   or tab
                  iOS (iPhone 3GS, v5.1.1)         None from cache                   All from cache                 All from cache            All from cache

Exit browser,     Android (Nexus S, v2.3.7)         All from cache                   All from cache                 All from cache            All from cache
 lock phone,
unlock phone,
open browser      iOS (iPhone 3GS, v5.1.1)         None from cache                   All from cache                 All from cache            All from cache

                  Android (Nexus S, v2.3.7)         All from cache                   All from cache                 All from cache            All from cache
  Kill browser,
launch browser
                  iOS (iPhone 3GS, v5.1.1)         None from cache                   All from cache                 All from cache            All from cache

                  Android (Nexus S, v2.3.7)         All from cache                   All from cache                 All from cache            All from cache
Reboot phone
                  iOS (iPhone 3GS, v5.1.1)         None from cache                   All from cache                 All from cache            All from cache

  After page                                                                  If-Modified-Since and            If-Modified-Since and
                  Android (Nexus S, v2.3.7)         All from cache                                                                            All from cache
 loads, click                                                                Cache-Control:max-age=0          Cache-Control:max-age=0
 URL and hit
     enter         iOS (iPhone 3GS, v5.1.1)        None from cache                   All from cache                 All from cache            All from cache

                  Android (Nexus S, v2.3.7)   Cache-Control:no-cache          Cache-Control:no-cache          Cache-Control:no-cache    Cache-Control:no-cache
 Refresh after
  page loads                                                                  If-Modified-Since and            If-Modified-Since and
                   iOS (iPhone 3GS, v5.1.1)   Cache-Control:max-age=0                                                                   Cache-Control:max-age=0
                                                                             Cache-Control:max-age=0          Cache-Control:max-age=0




 *Images only: filled cache through a page that referenced ~2MB of images, all with some or no caching headers; then
 performed user action




     © 2010 Strangeloop Networks                               Strangeloop. Faster Websites. Automatically.                                                182
HTTP Pipelining




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   183
Typical HTTP Operation


                                               GET /thing1!


                                             200 STATUS OK!

T
                                                GET /thing2!
I
M             Client                                                         Server
                                             200 STATUS OK!
E
                                                 GET /thing3!


                                             200 STATUS OK!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.        184
Typical HTTP




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   185
HTTP With Pipelining



                              GET /thing1 GET /thing2 GET /thing3!


                                               200 STATUS OK!
T
I                                              200 STATUS OK!
M             Client                                                           Server
E
                                               200 STATUS OK!




© 2010 Strangeloop Networks     Strangeloop. Faster Websites. Automatically.        186
HTTP with Pipelining




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   187
Packet Drop Penalty

•  Now, a packet dropped could
   mean multiple HTTP requests
   got dropped

•  Good reading:
    –  http://www.guypo.com/
       mobile/http-pipelining-big-in-
       mobile/

•  Things to know
         –  Make sure everything in the middle
            supports pipelining
         –  Be aware of HOL blocking




© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   188
TCP Windows




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   189
TCP’s Initial Congestion Window (init_cwnd)
                                                      SYN!


                                                   SYN/ACK!


                                                       ACK!

                                                     GET /!
T
I
              Client                                                          Server
M                                     200 STATUS OK (+Data)!
                                                                             (init_cwnd =6)
E                                                      Data!

                                                       Data!

                                                       Data!

                                                       Data!

                                                       Data!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.             190
TCP Windows

•  Increasing init_cwnd is a common performance
   recommendation
         –  Google recommends 10
         –  Most high performance proxies and load balancers
            have init_cwnd of much higher than the default 2 or 3
            segments
         –  Nice study on CDN init_cwnd values:
                  •  http://www.cdnplanet.com/blog/initcwnd-settings-major-cdn-
                     providers/
•  cwnd during the rest of the connection depends
   on slow start and congestion avoidance stages
   of the connection

© 2010 Strangeloop Networks         Strangeloop. Faster Websites. Automatically.   191
TCP Windows

•  Actual send window calculation is a bit more
   complicated
         –  Congestion avoidance
         –  The other side’s receive window


•  The simplified formula:

                              Min(cwnd, receive_window)!


                        Sender (internal calculation)                                         Receiver (internal calculation and
                                                                                                advertised in each segment)



© 2010 Strangeloop Networks                    Strangeloop. Faster Websites. Automatically.                                        192
Small Receive Window
                                           SYN (Win=2920)!


                                         SYN/ACK (Win=xxx)!


                                            ACK (Win=2920)!

                                          GET / (Win=2920)!
T
I
              Client                                                                     Server
M                                     200 STATUS OK (+Data)!
                                                                                        (init_cwnd =6)
E                                                      Data!


                                                                              Wait
                                                                             for ACK!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.                        193
Rx Window examples: Windows




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   194
Rx Windows: iOS (iPhone/iPad)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   195
Rx Windows: Android (Gingerbread)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   196
Rx Windows: Android (ICS)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   197
Rx Windows

•  It’s still very much a good idea to have larger
   init_cwnd sizes
•  We should be aware of how data is sent to
   mobile devices
•  Android’s move to 14600 (10 x max MSS) in ICS
   is great!
•  Great reading:
         –  http://www.cdnplanet.com/blog/tune-tcp-initcwnd-
            for-optimum-performance/



© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   198
Sleeping Radios!




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   199
Connection To Cell towers

•  Radios disconnect from the tower after idle time
   (to conserve power) and take 1-2 seconds to
   reconnect
•  Excellent reading from Steve:
                  •  http://www.stevesouders.com/blog/2011/09/21/making-a-
                     mobile-connection/
                  •  Test it: http://stevesouders.com/ms/




© 2010 Strangeloop Networks        Strangeloop. Faster Websites. Automatically.   200
This Could Complicate Testing




                              Run 1                                                  Run 2




© 2010 Strangeloop Networks           Strangeloop. Faster Websites. Automatically.           201
Waterfall Detail (Run 2)




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   202
The 2 Second Radio Thing

•     Not much we can do about it
•     Good lesson learned
•     Need to keep this in mind as we do more testing
•     Optimization opportunity
         –  You can have small keep-alive requests flow between
            the phone and the site, as a user navigates through
            your pages
         –  Use this carefully à battery and data usage




© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   203
Final Thoughts
(This is slide 204!!!)
Summary

•  Performance matters!
•  Measurement tools can be somewhat frustrating,
   but they’re heading in the right direction
•  Mobile performance optimization is a huge area
   of opportunity
         –  Lots of room for acceleration of mobile sites
         –  New considerations for form factor and operational
            functionality
•  For those of us used to testing desktop
   browsers, there are new gotchas and fun lessons
   to learn!
© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   205
Thank you.



" hooman@strangeloopnetworks.com
" http://strangeloopnetworks.com

"  Velocity Office Hours: Wednesday @2.30pm



© 2010 Strangeloop Networks   Strangeloop. Faster Websites. Automatically.   206

More Related Content

What's hot

Testing Mobile App Performance MOT Edinburgh
Testing Mobile App Performance MOT EdinburghTesting Mobile App Performance MOT Edinburgh
Testing Mobile App Performance MOT EdinburghDoug Sillars
 
Mot cph when its just too slow
Mot cph when its just too slowMot cph when its just too slow
Mot cph when its just too slowDoug Sillars
 
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011Peter Moskovits
 
Real Life WebSocket Case Studies and Demos
Real Life WebSocket Case Studies and DemosReal Life WebSocket Case Studies and Demos
Real Life WebSocket Case Studies and DemosPeter Moskovits
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoMaximiliano Firtman
 
Building Living Web Applications with HTML5 WebSockets
Building Living Web Applications with HTML5 WebSocketsBuilding Living Web Applications with HTML5 WebSockets
Building Living Web Applications with HTML5 WebSocketsPeter Moskovits
 
Performance automation 101 @LDNWebPerf MickMcGuinness
Performance automation 101 @LDNWebPerf MickMcGuinnessPerformance automation 101 @LDNWebPerf MickMcGuinness
Performance automation 101 @LDNWebPerf MickMcGuinnessStephen Thair
 
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015Rich Cullen
 
Mobile web perf Amsterdam Tech Tips
Mobile web perf Amsterdam Tech TipsMobile web perf Amsterdam Tech Tips
Mobile web perf Amsterdam Tech TipsDoug Sillars
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of ThingsPeter Moskovits
 
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014Maximiliano Firtman
 
Qa fest kiev_when its just too slow
Qa fest kiev_when its just too slowQa fest kiev_when its just too slow
Qa fest kiev_when its just too slowDoug Sillars
 
Performance as UX with Justin Howlett
Performance as UX with Justin HowlettPerformance as UX with Justin Howlett
Performance as UX with Justin HowlettFITC
 
Belgrade when its just too slow
Belgrade when its just too slowBelgrade when its just too slow
Belgrade when its just too slowDoug Sillars
 
Its Time To Stop Stalling: Mobile App and Video Performance
Its Time To Stop Stalling: Mobile App and Video PerformanceIts Time To Stop Stalling: Mobile App and Video Performance
Its Time To Stop Stalling: Mobile App and Video PerformanceDoug Sillars
 
Its timetostopstalling sw_mobile_bristol
Its timetostopstalling sw_mobile_bristolIts timetostopstalling sw_mobile_bristol
Its timetostopstalling sw_mobile_bristolDoug Sillars
 
Its timetostopstalling limerick
Its timetostopstalling limerickIts timetostopstalling limerick
Its timetostopstalling limerickDoug Sillars
 

What's hot (20)

Testing Mobile App Performance MOT Edinburgh
Testing Mobile App Performance MOT EdinburghTesting Mobile App Performance MOT Edinburgh
Testing Mobile App Performance MOT Edinburgh
 
Mot cph when its just too slow
Mot cph when its just too slowMot cph when its just too slow
Mot cph when its just too slow
 
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
Extending JMS to Web Devices over HTML5 WebSockets - JavaOne 2011
 
Real Life WebSocket Case Studies and Demos
Real Life WebSocket Case Studies and DemosReal Life WebSocket Case Studies and Demos
Real Life WebSocket Case Studies and Demos
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack Toronto
 
Building Living Web Applications with HTML5 WebSockets
Building Living Web Applications with HTML5 WebSocketsBuilding Living Web Applications with HTML5 WebSockets
Building Living Web Applications with HTML5 WebSockets
 
Performance automation 101 @LDNWebPerf MickMcGuinness
Performance automation 101 @LDNWebPerf MickMcGuinnessPerformance automation 101 @LDNWebPerf MickMcGuinness
Performance automation 101 @LDNWebPerf MickMcGuinness
 
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015
Top 10 real life WebSocket use cases & experiences - Devoxx UK 2015
 
Mobile web perf Amsterdam Tech Tips
Mobile web perf Amsterdam Tech TipsMobile web perf Amsterdam Tech Tips
Mobile web perf Amsterdam Tech Tips
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
 
Qa fest kiev_when its just too slow
Qa fest kiev_when its just too slowQa fest kiev_when its just too slow
Qa fest kiev_when its just too slow
 
Mobius keynote
Mobius keynoteMobius keynote
Mobius keynote
 
Performance as UX with Justin Howlett
Performance as UX with Justin HowlettPerformance as UX with Justin Howlett
Performance as UX with Justin Howlett
 
Belgrade when its just too slow
Belgrade when its just too slowBelgrade when its just too slow
Belgrade when its just too slow
 
Faster web pages
Faster web pagesFaster web pages
Faster web pages
 
HTML5 WebSockets
HTML5 WebSocketsHTML5 WebSockets
HTML5 WebSockets
 
Its Time To Stop Stalling: Mobile App and Video Performance
Its Time To Stop Stalling: Mobile App and Video PerformanceIts Time To Stop Stalling: Mobile App and Video Performance
Its Time To Stop Stalling: Mobile App and Video Performance
 
Its timetostopstalling sw_mobile_bristol
Its timetostopstalling sw_mobile_bristolIts timetostopstalling sw_mobile_bristol
Its timetostopstalling sw_mobile_bristol
 
Its timetostopstalling limerick
Its timetostopstalling limerickIts timetostopstalling limerick
Its timetostopstalling limerick
 

Similar to Velocity 2012: The 90-Minute Mobile Optimization Life Cycle

Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...
Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...
Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...Strangeloop
 
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...Strangeloop
 
Front End Optimization [Cloud Connect 2012]
Front End Optimization [Cloud Connect 2012]Front End Optimization [Cloud Connect 2012]
Front End Optimization [Cloud Connect 2012]Strangeloop
 
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and Predictions
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and PredictionsO'Reilly webcast: Joshua Bixby on Mobile Performance Trends and Predictions
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and PredictionsStrangeloop
 
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]Strangeloop
 
Edge 2016 what slows you down - your network or your device
Edge 2016 what slows you down - your network or your deviceEdge 2016 what slows you down - your network or your device
Edge 2016 what slows you down - your network or your deviceakamaidevrel
 
Fast Online Access to Massive Offline Data - SECR 2016
Fast Online Access to Massive Offline Data - SECR 2016Fast Online Access to Massive Offline Data - SECR 2016
Fast Online Access to Massive Offline Data - SECR 2016Felix GV
 
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...Strangeloop
 
Mobile Performance Testing - Testing the Server
Mobile Performance Testing  - Testing the ServerMobile Performance Testing  - Testing the Server
Mobile Performance Testing - Testing the ServerXBOSoft
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudyJohn Adams
 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds
 
Changing Admins Lives Forever with Automated Network Management
Changing Admins Lives Forever with Automated Network ManagementChanging Admins Lives Forever with Automated Network Management
Changing Admins Lives Forever with Automated Network ManagementMark Piening
 
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedIn
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedInБыстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedIn
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedInCEE-SEC(R)
 
Beyond CDNs: How to Harness the Next Phase of Innovation in Web Performance
Beyond CDNs: How to Harness the Next Phase of Innovation in Web PerformanceBeyond CDNs: How to Harness the Next Phase of Innovation in Web Performance
Beyond CDNs: How to Harness the Next Phase of Innovation in Web PerformanceYottaa
 
IBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksIBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksDejan Glozic
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Maximiliano Firtman
 

Similar to Velocity 2012: The 90-Minute Mobile Optimization Life Cycle (20)

Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...
Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...
Cloud Connect Santa Clara 2013: Web Acceleration and Front-End Optimization (...
 
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...
Cloud Performance: Guide to Tackling Cloud Latency [Cloud Connect - Chicago 2...
 
Front End Optimization [Cloud Connect 2012]
Front End Optimization [Cloud Connect 2012]Front End Optimization [Cloud Connect 2012]
Front End Optimization [Cloud Connect 2012]
 
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and Predictions
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and PredictionsO'Reilly webcast: Joshua Bixby on Mobile Performance Trends and Predictions
O'Reilly webcast: Joshua Bixby on Mobile Performance Trends and Predictions
 
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]
2012 Annual State of the Union for Mobile Ecommerce Performance [Velocity EU]
 
Edge 2016 what slows you down - your network or your device
Edge 2016 what slows you down - your network or your deviceEdge 2016 what slows you down - your network or your device
Edge 2016 what slows you down - your network or your device
 
Fast Online Access to Massive Offline Data - SECR 2016
Fast Online Access to Massive Offline Data - SECR 2016Fast Online Access to Massive Offline Data - SECR 2016
Fast Online Access to Massive Offline Data - SECR 2016
 
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...
Velocity 2010: Performance Impact, Part Two: More Findings from the Front Lin...
 
Mobile Performance Testing - Testing the Server
Mobile Performance Testing  - Testing the ServerMobile Performance Testing  - Testing the Server
Mobile Performance Testing - Testing the Server
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudy
 
SolarWinds Scalability for the Enterprise
SolarWinds Scalability for the EnterpriseSolarWinds Scalability for the Enterprise
SolarWinds Scalability for the Enterprise
 
Lighthouse
LighthouseLighthouse
Lighthouse
 
Web Leaps Forward
Web Leaps ForwardWeb Leaps Forward
Web Leaps Forward
 
Changing Admins Lives Forever with Automated Network Management
Changing Admins Lives Forever with Automated Network ManagementChanging Admins Lives Forever with Automated Network Management
Changing Admins Lives Forever with Automated Network Management
 
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedIn
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedInБыстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedIn
Быстрый онлайн-доступ к огромному количеству оффлайн-данных в LinkedIn
 
Beyond CDNs: How to Harness the Next Phase of Innovation in Web Performance
Beyond CDNs: How to Harness the Next Phase of Innovation in Web PerformanceBeyond CDNs: How to Harness the Next Phase of Innovation in Web Performance
Beyond CDNs: How to Harness the Next Phase of Innovation in Web Performance
 
IBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksIBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New Tricks
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Real time web
Real time webReal time web
Real time web
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 

More from Strangeloop

37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]
37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]
37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]Strangeloop
 
Marrying CDNs with Front-End Optimization
Marrying CDNs with Front-End Optimization Marrying CDNs with Front-End Optimization
Marrying CDNs with Front-End Optimization Strangeloop
 
Advanced Mobile Optimization: How does it work? How do we measure success?
Advanced Mobile Optimization: How does it work? How do we measure success?Advanced Mobile Optimization: How does it work? How do we measure success?
Advanced Mobile Optimization: How does it work? How do we measure success?Strangeloop
 
London Web Performance Meetup: Performance for mortal companies
London Web Performance Meetup: Performance for mortal companiesLondon Web Performance Meetup: Performance for mortal companies
London Web Performance Meetup: Performance for mortal companiesStrangeloop
 
Performance in business terms
Performance in business termsPerformance in business terms
Performance in business termsStrangeloop
 
Web Performance Automation - NY Web Performance Meetup
Web Performance Automation - NY Web Performance MeetupWeb Performance Automation - NY Web Performance Meetup
Web Performance Automation - NY Web Performance MeetupStrangeloop
 

More from Strangeloop (6)

37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]
37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]
37 Lessons I've Learned on the Performance Front Lines [WebPerfDays 2012]
 
Marrying CDNs with Front-End Optimization
Marrying CDNs with Front-End Optimization Marrying CDNs with Front-End Optimization
Marrying CDNs with Front-End Optimization
 
Advanced Mobile Optimization: How does it work? How do we measure success?
Advanced Mobile Optimization: How does it work? How do we measure success?Advanced Mobile Optimization: How does it work? How do we measure success?
Advanced Mobile Optimization: How does it work? How do we measure success?
 
London Web Performance Meetup: Performance for mortal companies
London Web Performance Meetup: Performance for mortal companiesLondon Web Performance Meetup: Performance for mortal companies
London Web Performance Meetup: Performance for mortal companies
 
Performance in business terms
Performance in business termsPerformance in business terms
Performance in business terms
 
Web Performance Automation - NY Web Performance Meetup
Web Performance Automation - NY Web Performance MeetupWeb Performance Automation - NY Web Performance Meetup
Web Performance Automation - NY Web Performance Meetup
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 

Velocity 2012: The 90-Minute Mobile Optimization Life Cycle

  • 1. The 90-Minute Mobile Optimization Life Cycle Velocity 2012 Hooman Beheshti VP Technology, Strangeloop hooman@strangeloopnetworks.com
  • 2. Agenda •  Why is faster better? •  Measuring performance –  Tools –  Challenges •  Stepwise acceleration –  Pick a real site, and apply step by step performance optimizations •  Lessons from the field © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 2
  • 4. Growth of Smartphone Sales (as % of total mobile phone sales) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 4
  • 5. Traffic from Mobile Devices (2011) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 5
  • 6. Mobile Sales © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 6
  • 7. Case Study © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 7
  • 8. Customer Profile •  Top 200 Internet retailer, US based •  Target geography: US and Europe •  $3B in revenue •  30,000 employees © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 8
  • 9. Page Views by Mobile Device © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 9
  • 10. Experiment •  Induce delay on HTML –  200msec, 500msec, 1000msec •  Apply to small percentage of traffic •  12 weeks •  Monitor impact on key business metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 10
  • 11. Results © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 11
  • 12. Impact on Bounce Rate © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 12
  • 13. Impact on Returning Visitors © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 13
  • 14. More Details •  http://www.webperformancetoday.com/ 2011/11/23/case-study-slow-page-load-mobile- business-metrics/ •  http://velocityconf.com/velocityeu/public/ schedule/detail/21632 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 14
  • 15. Performance Measurement Measuring Page Speed on Mobile Devices
  • 16. Measurement •  Mobile measurement is still a challenge •  There are some tools out there –  Still pretty manual –  Less about performance and more about functionality –  Lots of simulation •  More complicated because of the number of different platforms and devices that we may need to cover •  Things are getting better © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 16
  • 17. Chrome Remote Debugging (ICS) •  A USB connection lets us see activity of mobile chrome on desktop chrome •  https://developers.google.com/chrome/mobile/ docs/debugging © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 17
  • 18. iWebInspector •  Web Inspector, but for iOS Simulator •  http://www.iwebinspector.com/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 18
  • 19. Weinre (Web Inspector Remote) •  Remote debugging from the desktop for what the phone is doing •  http://people.apache.org/~pmuellr/weinre/docs/ latest/Home.html © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 19
  • 20. Aardwolf •  Remote JavaScript debugging (all platforms) •  http://lexandera.com/aardwolf/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 20
  • 21. Mobile Perf Bookmarklet •  More focus on performance •  http://stevesouders.com/ mobileperf/mobileperfbkm.php •  Super bookmarklet with lots of tools built in © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 21
  • 22. PCAP2HAR •  Turn packet captures to waterfalls •  http://pcapperf.appspot.com/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 22
  • 23. Real User Monitoring (RUM) •  RUM tools are increasing in availability –  Google Analytics –  New companies and solutions emerging •  Measurement on actual devices, for real users •  Need lots of data to draw conclusions –  And must have a way to deal with outliers •  Navigation Timing (only in Chrome for Android right now) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 23
  • 24. Webpagetest © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 24
  • 25. Webpagetest’s Mobile Agent •  Based on the recently open-sourced mobitest agent •  Interacts with the server just like a standard desktop agent •  Available for Android and iOS –  Still in the early stages, but key metrics are reported –  Some features (like scripting) don’t work –  Cold cache tests and videos are working fine –  For iOS, it uses UIWebView rather than Safari •  Even with the limitations, still the best tool for getting a feel for mobile performance © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 25
  • 26. Visualizing Performance © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 26
  • 27. Visualizing Performance 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 27
  • 28. Visualizing Performance DNS TTFB TCP Download Connection 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 28
  • 29. Visualizing Performance 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 29
  • 30. Visualizing Performance Back End: The time from when the request is made by the browser to last byte of the HTML response 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 30
  • 31. Visualizing Performance Back End: The time from when the request is made by the browser to last byte of the HTML response Front End: Everything after the HTML arrives 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 31
  • 32. Visualizing Performance Back End: The time from when the request is made by the browser to last byte of the HTML response Front End: Everything after the HTML arrives Important Timers: Start Render onLoad (Document Complete) 0 6 12 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 32
  • 34. Methodology © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 34
  • 35. Setup •  All testing done on 3G from Vancouver –  Nexus S with WPT agent –  Rogers Network •  Traffic flows through Strangeloop service –  We apply optimizations in the path –  Used host file entries since DNS overwrite isn’t available on the agent •  The phone does everything else © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 35
  • 36. Setup 3G Connection Origin Origin Data Center © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 36
  • 37. Cooking Show Methodology *No tiger blood was used during any of these tests! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 37
  • 38. Let’s Pick a Site! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 38
  • 39. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 39
  • 40. A Few Points of Clarification •  We’re only choosing oreilly.com for fun •  We’re using it only to show what some performance problems are – this doesn’t mean the site has these problems •  The real site is somewhere in the middle of this blue bar © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 40
  • 41. Waterfall and Key Performance Metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 41
  • 42. Per Object Breakdown (partial) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 42
  • 43. Content Breakdown © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 43
  • 44. Problem Analysis © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 44
  • 45. Performance Problems •  Too many connections © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 45
  • 46. Too Many Connections 83 Connections © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 46
  • 47. Connection Cost is High © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 47
  • 48. Performance Problems •  Too many connections •  Too many bytes © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 48
  • 49. Too Many Bytes © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 49
  • 50. Performance Problems •  Too many connections •  Too many bytes •  No CDN © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 50
  • 51. Too Long to First Byte © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 51
  • 52. Time to First Byte •  Every request is subjected to one round trip •  Concurrency of requests helps, as does pipelining – but it’s still a problem –  More on pipelining later •  A bigger problem when there are more objects © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 52
  • 53. Performance Problems •  Too many connections •  Too many bytes •  No CDN •  Too many round trips © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 53
  • 54. Too Many Round Trips © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 54
  • 55. Too Many Round Trips •  Every request is still paying a penalty –  TTFB continues to be a problem •  The higher the latency, the bigger the problem •  Better concurrency on modern mobile browsers is helping, but not enough. This is still a huge problem © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 55
  • 56. Performance Problems •  Too many connections •  Too many bytes •  No CDN •  Too many round trips •  Poor caching (more on this later) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 56
  • 57. Performance Problems •  Too many connections •  Too many bytes •  No CDN •  Too many round trips •  Poor caching (more on this later) •  3rd party calls (marketing tags, analytics, etc) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 57
  • 58. 3rd party © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 58
  • 59. 3rd party © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 59
  • 60. 3rd party Before Start Render © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 60
  • 61. Performance Problems •  Too many connections •  Too many bytes •  No CDN •  Too many round trips •  Poor caching (more on this later) •  3rd party calls (marketing tags, analytics, etc) è Similar to desktop, but impact is different on mobile devices © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 61
  • 62. What Does it Look Like? http://www.youtube.com/watch?v=jo4zxzv3USg © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 62
  • 63. Summary of Key Metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 63
  • 64. Key Metrics – Original Site Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6 15 5 4 10 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 64
  • 65. Let’s Fix It! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 65
  • 66. What Are We Going To Do? •  Stepwise acceleration –  We’ll accelerate the page in multiple steps –  We’ll add techniques at each step and evaluate the performance impact •  We’ll start with the easy stuff and get more advanced with each step •  Try to make the page as fast as possible © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 66
  • 67. Step1: Low Hanging Fruit © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 67
  • 68. Step 1: Optimizations •  Add keep-alive connections –  Address the problem with too many connections –  Lessen the impact of TCP connection setup •  Add HTTP compression –  One way to reduce bytes, and an easy one –  We’ll compress text-based content (HTML, CSS, JS, etc) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 68
  • 69. Keep-alive Connections 83 Connections © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 69
  • 70. HTTP Compression © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 70
  • 71. Step 1: What Should We Expect •  Fewer total connections •  Fewer bytes •  Impact to performance metrics –  Fewer bytes to onload –  No change to roundtrips –  Better document complete time –  Better start render © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 71
  • 72. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 72
  • 73. Before and After 20.52 sec 15.29 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 73
  • 74. What We Helped •  Connection Count –  83 connection à 30 connection •  Key metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 74
  • 75. Step 1: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6 15 5 4 10 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 75
  • 76. Step 1: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 945 80 800 70 218 700 60 600 50 500 23 % 727 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 7.738 20.52 20 7 0.679 5.231 6 15 5 4 ~9% 7.059 10 25 % 15.289 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 76
  • 77. What Does it Look Like? http://www.youtube.com/watch?v=qMGAOqQQqvw © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 77
  • 78. Pros and Cons •  Pros –  Really easy to do –  Usually a single configuration option on servers, proxies, or load balancers –  Great bang for the buck •  Cons –  It’s still slow! –  These are, by themselves, just not enough © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 78
  • 79. Step 2: CDN © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 79
  • 80. CDN Edge Cache Edge Cache Origin Origin Edge Cache Data Center Edge Cache © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 80
  • 81. CDN •  Static resources are served from locations near the requesting client (mobile or otherwise) •  Shorter distance between client and content means smaller TTFB © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 81
  • 82. What Should We Expect •  Faster average time to first byte for the objects on the page •  Impact to performance metrics –  No change to round trips –  No change to byte count –  Better start render time –  Better document complete time © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 82
  • 83. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 83
  • 84. Before and After 15.29 sec 13.7 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 84
  • 85. Impact on TTFB -39.8 % Avg = 655 ms Avg = 394 ms © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 85
  • 86. What We Helped © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 86
  • 87. Step 2: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6 15 5 4 10 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 87
  • 88. Step 2: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 7.059 15.289 20 7 0.814 1.552 6 15 5 4 12% 6.245 10 10 % 13.737 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 88
  • 89. What Does it Look Like? http://www.youtube.com/watch?v=aiViEjuVb_g © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 89
  • 90. Pros and Cons •  Pros –  CDNs are always good ways to reduce TTFB –  Physics! –  Well-established industry; lots and lots of vendors •  Cons –  Can sometimes be costly –  Why wasn’t it faster? © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 90
  • 91. CDNs for Mobile •  We got faster, but we expected more of an improvement –  Before: we forced requests to go from west coast to east coast –  After: let the CDNs naturally select closest edge •  Wondering out loud… –  Is edge selection for mobile devices not as effective? –  3G more of a mystery than WiFi © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 91
  • 92. CDN Edge Selection - Desktop Edge Cache Edge Cache DNS Resolver CDN DNS Brains Origin Origin Edge Cache Data Center Edge Cache © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 92
  • 93. CDN Edge Selection – Mobile Network DNS Edge Cache Resolver Edge Cache ? CDN DNS Brains Origin Origin Edge Cache Data Center Edge Cache DNS Resolver © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 93
  • 94. CDN Edge Selection – Mobile Networks •  I have no idea how the inside of the cell networks work! •  Test: –  From the phone (on 3G) ping 2 CDN names –  From the phone, ping the IP address the CDN resolved for my desktop © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 94
  • 95. CDN Edge Selection – Mobile Networks CDN 1 CDN 2 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 95
  • 96. CDN Edge Selection – Mobile Networks Both pings from phone CDN 1 Ping cdn.domain.com Both pings from phone CDN 2 Ping IP that CDN picked for desktop © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 96
  • 97. HERESY!! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 97
  • 98. Important Questions To Ask •  Not making outrageous claims like “CDNs aren’t effective for mobile devices”!! •  CDNs almost surely deploy servers near cell network exit points. But, what if most of the latency is inside the cell network? •  Does the meaning for “closeness” change for mobile? •  More research is necessary… © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 98
  • 99. Step 3: Mobile Front End Optimization © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 99
  • 100. Mobile FEO •  Consolidation of resources –  Images –  CSS –  JavaScript •  Image Compression •  Minification –  JavaScript –  CSS •  Optimal use of localStorage (more on this later) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 100
  • 101. Mobile FEO © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 101
  • 102. What Should We Expect •  Fewer round trips will mean the TTFB problem should get a lot better •  Fewer bytes will mean better performance –  Images (from image compression) –  CSS/JS (from minification) •  Impact to performance metrics –  Reduction in round trips –  Reduction in byte count (on top of HTTP Compression) –  Better start render time –  Better document complete time © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 102
  • 103. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 103
  • 104. Before and After 9.47 sec 13.7 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 104
  • 105. What We Helped © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 105
  • 106. Step 3: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6 15 5 4 10 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 106
  • 107. Step 3: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 727 70 92 700 60 600 310 64 50 500 40 400 30 300 417 28 20 200 10 70 % 100 43% 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6.245 13.737 6 2.589 15 4.260 5 4 10 3 3.656 9.477 2 5 1 41% 31 % 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 107
  • 108. What Does it Look Like? http://www.youtube.com/watch?v=J_gU2Z_b-6I © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 108
  • 109. Pros and Cons •  Pros –  Noticeable and significant benefit over easier techniques –  The mobile form factor lets us be more aggressive with some of the techniques –  Smart use of localStorage •  Cons –  It’s not easy! –  Techniques must survive site changes (regression) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 109
  • 110. Step 4: More Mobile FEO © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 110
  • 111. More Mobile FEO •  Deferral –  Analytics –  Marketing tags –  Ads –  Etc © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 111
  • 112. 3rd Party Calls © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 112
  • 113. 3rd Party Calls © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 113
  • 114. What Should We Expect •  Deferral of round trips to after onload •  Impact to performance metrics –  Fewer round trips to onload –  Fewer bytes to onload –  Better start render time –  Better document complete time © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 114
  • 115. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 115
  • 116. Before and After © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 116
  • 117. Before and After © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 117
  • 118. Before and After 2.2 sec 3.6 sec 9.47 sec 5.56 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 118
  • 119. What We Helped © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 119
  • 120. Step 4: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 800 70 700 60 600 50 500 40 400 30 300 20 200 10 100 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 20 7 6 15 5 4 10 3 2 5 1 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 120
  • 121. Step 4: Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 64 % 900 34 % 80 800 70 700 60 600 50 500 28 417 40 400 30 18 300 142 20 200 10 100 10 275 0 0 Start Render (sec) Doc Complete (sec) 9 25 8 41% 41 % 20 7 6 15 5 4 3.656 9.477 10 3 3.92 1.493 2 5 1 2.163 5.557 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 121
  • 122. What Does it Look Like? http://www.youtube.com/watch?v=e0oFr0pSRn8 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 122
  • 123. Pros and Cons •  Pros –  Gives you the control that your marketing team may have given away! –  Solves a very difficult problem, resulting in improvements to all key metrics –  Much better visual experience •  Cons –  Again, not easy! –  Must understand what the purpose of each 3rd party call is © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 123
  • 124. Quick Summary of Stepwise Acceleration © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 124
  • 125. Overall Improvements Original Keep-alive / Compression CDN Mobile FEO 1 Mobile FEO 2 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 125
  • 126. Overall Improvements Round trips to onload Bytes to onload (KB) 100 1000 90 900 80 89 % 71 % 800 70 700 60 600 50 93 500 945 40 400 30 83 670 300 20 200 10 100 10 275 0 0 Start Render (sec) Doc Complete (sec) 9 25 72 % 8 7 20 73 % 6 15 5 7.738 20.52 4 10 3 5.575 14.963 2 5 1 2.163 5.557 0 0 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 126
  • 127. Mobile Caching © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 127
  • 128. Stating The Obvious Caching is Good!!! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 128
  • 129. First View of a Page © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 129
  • 130. Repeat View with Terrible Caching © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 130
  • 131. Repeat View with Validations Only © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 131
  • 132. Repeat View with Good Caching © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 132
  • 133. Mobile Caching •  The primary issues with mobile caching: –  where to put the objects –  the size of the cache •  Some good reading –  Device Cache Sizes •  Wink toolkit study: http://www.winktoolkit.org/blog/204/ •  YUI study: http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/ •  Blaze study: http://www.guypo.com/mobile/understanding-mobile-cache-sizes/ –  Individual Files •  Steve Souders: http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/ •  More from YUI: http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits- revisited/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 133
  • 134. Mobile Cache Sizes •  Cache sizes are much smaller than desktop –  Android (2.x) about 5-7MB –  iOS is larger (>50MB) •  We need to think about: –  Total cache size limit –  Individual object size limit –  HTML pages •  User behavior may affect what’s served from cache •  Things are getting better, but not at the pace we want © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 134
  • 135. Some More Findings •  Android: –  Firefox and Opera (Gingerbread): ~10MB –  Stock browser in ICS: 25MB –  Chrome on ICS: much larger and based on amount of space available •  http://gent.ilcore.com/2012/02/chrome-fast-for-android.html •  Android and iOS –  When there’s room available, saw aggressive caching behavior © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 135
  • 136. Comparison to Desktop •  IE –  http://blogs.msdn.com/b/ie/archive/2011/03/17/internet- explorer-9-network-performance-improvements.aspx –  Defaults •  IE 6/7/8 à 1/32 of disk, cap of 50MB •  IE9 à 1/256 of disk (bigger disks), cap of 250MB •  Chrome –  Spot checked: >300MB •  Firefox –  Spot checked: >700MB •  From Steve: http://stevesouders.com/cache.php © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 136
  • 137. HTML5 localStorage •  W3C’s Web Storage Spec: –  http://dev.w3.org/html5/webstorage/ •  Per domain storage –  Key/value pairs –  ~2.5MB –  Test it: http://dev-test.nemikor.com/web-storage/support- test/ •  Programmable –  It can be used for whatever you want –  This includes acting as a programmable object cache! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 137
  • 138. Bing’s Use of localStorage © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 138
  • 139. localStorage as a Cache •  It gives us new space, not shared, to use for caching •  It’s programmable and scriptable, something we’ve never had with HTTP object caches •  Typically good for caching CSS and JavaScript, especially those used site-wide •  Could also be used for small images –  Using DataURI format for images © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 139
  • 140. A Little Bonus! Maybe there’s another site we can accelerate…
  • 141. Velocityconf.com © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 141
  • 142. Waterfall and Key Performance Metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 142
  • 143. What Does it Look Like? http://www.youtube.com/watch?v=hsQnkIPTgo4 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 143
  • 144. Further Analysis © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 144
  • 145. Further Analysis © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 145
  • 146. Functional Acceleration •  Most images are not in the immediate viewport •  Lots of round trips blocking start render •  This time, we’ll accelerate with an eye towards: –  Improving start render time –  Making the page available quicker © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 146
  • 147. Step 1: Deferral © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 147
  • 148. Deferral •  Let’s defer: –  3rd party calls (like before) –  Images not in the viewport •  Also basic Mobile FEO –  Image compression and minification –  Some consolidation of CSS and JavaScript •  What should we expect –  Better start render time –  Better document complete time –  Better visual response – snappier page © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 148
  • 149. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 149
  • 150. Before and After 2.1 6.2 sec sec 12.61 sec 4.7 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 150
  • 151. Before and After 2.1 6.2 sec sec 12.61 sec 4.7 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 151
  • 152. What We Helped © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 152
  • 153. What Does it Look Like? http://www.youtube.com/watch?v=XD6QkP0bNak © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 153
  • 154. Step 2: Less Deferral? © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 154
  • 155. Let’s Look at the Page Again Visible Deferred Images © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 155
  • 156. Let’s Look at the Page Again Visible Make more images available before onload Deferred Images © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 156
  • 157. Defer less images •  Let’s not defer one scroll of images –  User can scroll faster and still have the next screen’s images available •  If the visual response is just as fast, then this is a good option if we expect people to scroll on our site right away © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 157
  • 158. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 158
  • 159. Before and After © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 159
  • 160. Before and After 2.18 2.1 sec sec 4.7 sec 5.3 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 160
  • 161. What Does it Look Like? http://www.youtube.com/watch?v=eLmzd8A7RbA © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 161
  • 162. It’s Not Always About Every Metric! •  Visually, we’re about the same as full image deferral, but 4 images are available 2 seconds earlier •  Some of this can be done programmatically – dynamic decisions made by the browser –  Figure out coordinates for image; choose to download now or later © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 162
  • 163. Step 3: One Last Thing © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 163
  • 164. One Last Thing © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 164
  • 165. One Last Thing © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 165
  • 166. One Last Thing 200 msec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 166
  • 167. One Last Thing 200 msec 775 msec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 167
  • 168. Cache the HTML •  Cache the HTML base page itself –  Somewhere in front of the server, before the browser –  In this case, it’s a feature of the service •  Eliminate server processing time –  Serve the HTML faster –  Improve TTFB of the page and all other performance metrics © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 168
  • 169. © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 169
  • 170. Before and After © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 170
  • 171. Before and After 775 msec 236 msec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 171
  • 172. Before and After 2.18 1.78 sec sec 5.3 sec 3.2 sec © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 172
  • 173. What Does it Look Like? http://www.youtube.com/watch?v=gQgsxDiWqLQ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 173
  • 174. HTML Caching •  HTML is typically dynamic –  It can be static for short periods of time (the velocity home page is a good example) –  Some technologies allow fragmentation of the page into static and dynamic portions •  HTML can be user-agent specific –  For velocity’s home page, the same URL generates different pages depending on the browser •  With HTML Caching, we need extra smarts: –  Granular expiration –  Browser aware –  Careful with personalized content © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 174
  • 175. We Covered Everything, right? Not Quite…
  • 176. Not Done Yet •  We may have made these 2 pages faster, but there’s a lot more to mobile optimization •  Performance is not only about pages –  We should always think about the site •  Optimizations should include operational improvements specific to mobile devices © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 176
  • 177. Site-wide Optimizations - flows Actual User Interaction © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 177
  • 178. More Performance Optimizations •  Converting click events to touch events –  Can save up to 500msec per event •  Smart use of localStorage –  Versioning –  Dynamic decisions based on state of localStorage •  Redirect suppression –  Sites that initially redirect to mobile version incur a costly roundtrip •  3G vs WiFi –  navigator.connection.type – Android only for now © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 178
  • 179. Operational and Other Optimizations •  Hiding the URL bar •  Smart image loading for pinch to zoom –  Automatically detect pinch and grab higher resolution image •  Viewport optimizations –  E.g. Automatic detection of viewport •  Mobile meta tags •  Great presentation from Max Firtman: –  http://velocityconf.com/velocity2011/public/schedule/ detail/19976 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 179
  • 180. Lessons Learned From The Field Things you should know about mobile devices
  • 181. More on Mobile Cache Behavior © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 181
  • 182. Mobile Cache Behavior User With Last-Modified Device No Cache Headers* With Last-Modified* With max-age* Action and max-age* Android (Nexus S, v2.3.7) All from cache All from cache All from cache All from cache New window or tab iOS (iPhone 3GS, v5.1.1) None from cache All from cache All from cache All from cache Exit browser, Android (Nexus S, v2.3.7) All from cache All from cache All from cache All from cache lock phone, unlock phone, open browser iOS (iPhone 3GS, v5.1.1) None from cache All from cache All from cache All from cache Android (Nexus S, v2.3.7) All from cache All from cache All from cache All from cache Kill browser, launch browser iOS (iPhone 3GS, v5.1.1) None from cache All from cache All from cache All from cache Android (Nexus S, v2.3.7) All from cache All from cache All from cache All from cache Reboot phone iOS (iPhone 3GS, v5.1.1) None from cache All from cache All from cache All from cache After page If-Modified-Since and If-Modified-Since and Android (Nexus S, v2.3.7) All from cache All from cache loads, click Cache-Control:max-age=0 Cache-Control:max-age=0 URL and hit enter iOS (iPhone 3GS, v5.1.1) None from cache All from cache All from cache All from cache Android (Nexus S, v2.3.7) Cache-Control:no-cache Cache-Control:no-cache Cache-Control:no-cache Cache-Control:no-cache Refresh after page loads If-Modified-Since and If-Modified-Since and iOS (iPhone 3GS, v5.1.1) Cache-Control:max-age=0 Cache-Control:max-age=0 Cache-Control:max-age=0 Cache-Control:max-age=0 *Images only: filled cache through a page that referenced ~2MB of images, all with some or no caching headers; then performed user action © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 182
  • 183. HTTP Pipelining © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 183
  • 184. Typical HTTP Operation GET /thing1! 200 STATUS OK! T GET /thing2! I M Client Server 200 STATUS OK! E GET /thing3! 200 STATUS OK! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 184
  • 185. Typical HTTP © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 185
  • 186. HTTP With Pipelining GET /thing1 GET /thing2 GET /thing3! 200 STATUS OK! T I 200 STATUS OK! M Client Server E 200 STATUS OK! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 186
  • 187. HTTP with Pipelining © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 187
  • 188. Packet Drop Penalty •  Now, a packet dropped could mean multiple HTTP requests got dropped •  Good reading: –  http://www.guypo.com/ mobile/http-pipelining-big-in- mobile/ •  Things to know –  Make sure everything in the middle supports pipelining –  Be aware of HOL blocking © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 188
  • 189. TCP Windows © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 189
  • 190. TCP’s Initial Congestion Window (init_cwnd) SYN! SYN/ACK! ACK! GET /! T I Client Server M 200 STATUS OK (+Data)! (init_cwnd =6) E Data! Data! Data! Data! Data! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 190
  • 191. TCP Windows •  Increasing init_cwnd is a common performance recommendation –  Google recommends 10 –  Most high performance proxies and load balancers have init_cwnd of much higher than the default 2 or 3 segments –  Nice study on CDN init_cwnd values: •  http://www.cdnplanet.com/blog/initcwnd-settings-major-cdn- providers/ •  cwnd during the rest of the connection depends on slow start and congestion avoidance stages of the connection © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 191
  • 192. TCP Windows •  Actual send window calculation is a bit more complicated –  Congestion avoidance –  The other side’s receive window •  The simplified formula: Min(cwnd, receive_window)! Sender (internal calculation) Receiver (internal calculation and advertised in each segment) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 192
  • 193. Small Receive Window SYN (Win=2920)! SYN/ACK (Win=xxx)! ACK (Win=2920)! GET / (Win=2920)! T I Client Server M 200 STATUS OK (+Data)! (init_cwnd =6) E Data! Wait for ACK! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 193
  • 194. Rx Window examples: Windows © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 194
  • 195. Rx Windows: iOS (iPhone/iPad) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 195
  • 196. Rx Windows: Android (Gingerbread) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 196
  • 197. Rx Windows: Android (ICS) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 197
  • 198. Rx Windows •  It’s still very much a good idea to have larger init_cwnd sizes •  We should be aware of how data is sent to mobile devices •  Android’s move to 14600 (10 x max MSS) in ICS is great! •  Great reading: –  http://www.cdnplanet.com/blog/tune-tcp-initcwnd- for-optimum-performance/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 198
  • 199. Sleeping Radios! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 199
  • 200. Connection To Cell towers •  Radios disconnect from the tower after idle time (to conserve power) and take 1-2 seconds to reconnect •  Excellent reading from Steve: •  http://www.stevesouders.com/blog/2011/09/21/making-a- mobile-connection/ •  Test it: http://stevesouders.com/ms/ © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 200
  • 201. This Could Complicate Testing Run 1 Run 2 © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 201
  • 202. Waterfall Detail (Run 2) © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 202
  • 203. The 2 Second Radio Thing •  Not much we can do about it •  Good lesson learned •  Need to keep this in mind as we do more testing •  Optimization opportunity –  You can have small keep-alive requests flow between the phone and the site, as a user navigates through your pages –  Use this carefully à battery and data usage © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 203
  • 204. Final Thoughts (This is slide 204!!!)
  • 205. Summary •  Performance matters! •  Measurement tools can be somewhat frustrating, but they’re heading in the right direction •  Mobile performance optimization is a huge area of opportunity –  Lots of room for acceleration of mobile sites –  New considerations for form factor and operational functionality •  For those of us used to testing desktop browsers, there are new gotchas and fun lessons to learn! © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 205
  • 206. Thank you. " hooman@strangeloopnetworks.com " http://strangeloopnetworks.com "  Velocity Office Hours: Wednesday @2.30pm © 2010 Strangeloop Networks Strangeloop. Faster Websites. Automatically. 206