Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Faster Mobile Sites

Faster Mobile Sites

Matt Farina

March 21, 2012
Tweet

More Decks by Matt Farina

Other Decks in Technology

Transcript

  1. Hi, My name is Matt. You might know me as

    mfer. mattfarina.com @mattfarina Wednesday, March 21, 12
  2. 1. Why front end performance is important. 2. Where to

    look for performance issues. 3. Resources, tools, and stuff you can use. 4. Some actions you can take on your site. Take Aways Wednesday, March 21, 12
  3. Before we talk about the fun and new stuff there’s

    are some things commonly talked about you should look into: • CDN • Varnish • APC Before We Get Started • Memcache • Lots of other cool stuff Wednesday, March 21, 12
  4. http://www.stevesouders.com/blog/2012/02/10/the-performance-golden-rule/ 13% 87% Front End Back End The HTTP Archive

    measurement of where time spent generating a page happens for the top 50K sites. Wednesday, March 21, 12
  5. 15% 85% Front End Back End 3% 97% Front End

    Back End Desktop Mobile http://www.readwriteweb.com/hack/2011/06/mobile-page-response.php Wednesday, March 21, 12
  6. 85% of mobile users expect sites to load at least

    as fast as using a desktop or laptop computer. http://www.tealeaf.com/customer-experience-management/resource-center/register.php?doc=mobile-cem Wednesday, March 21, 12
  7. 57% of online shoppers will wait three seconds or less

    before abandoning the site. http://www.akamai.com/html/about/press/releases/2010/press_061410.html Wednesday, March 21, 12
  8. “Yahoo! reported that making pages just 400 milliseconds slower resulted

    in a traffic drop of up to 9%.” http://www.slideshare.net/stoyan/yslow-20-presentation * Google, Amazon, and others have found similar results. Wednesday, March 21, 12
  9. SEO Google takes performance into account in search engine rankings.

    http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html Wednesday, March 21, 12
  10. We aren’t just competing over user time and attention with

    other websites. We’re also competing against native apps. Wednesday, March 21, 12
  11. According to ITU (UN agency for information and communications technology)

    in 2011 we only had 45% of 3g or better coverage worldwide. http://www.itu.int/ITU-D/ict/facts/2011/material/ICTFactsFigures2011.pdf Wednesday, March 21, 12
  12. “Research done at Google shows that an increase from 5Mbps

    to 10Mbps results in a disappointing 5% improvement in page load times. Or put slightly differently, a 10Mbps connection, on average uses only 16% of its capacity.” http://www.igvita.com/2011/10/20/faster-web-vs-tcp-slow-start/ Wednesday, March 21, 12
  13. If you pay for bandwidth and you can use less

    bandwidth to send the same functionality you have a savings at the same usage level. Wednesday, March 21, 12
  14. Minify Production JavaScript • For example, minified drupal.js is 24%

    the size of the original. • UglifyJS - a great minifier https://github.com/mishoo/UglifyJS • Speedy Module - minified core JS http://drupal.org/project/speedy • Advanced CSS/JS Aggregation (D 6.x) http://drupal.org/project/advagg Wednesday, March 21, 12
  15. Quick Note On Legal Issues • JavaScript downloaded to the

    browser is a form of distribution. • The source (non-minified) must be linked to or publicly available. This could be a link in a comment. • Preserve copyright / attribution comments. Note: I’m not a lawyer and this is not legal advice. Wednesday, March 21, 12
  16. Contrib Challenge: If a project in contrib is using un-minified

    JavaScript for production file a bug. Remember, patches welcome. Wednesday, March 21, 12
  17. Compression Tools ImageOptim - for mac and what I use

    http://imageoptim.pornel.net/ SmushIt - a web service owned by Yahoo! http://www.smushit.com/ysmush.it/ RIOT - Recommended to me but never used http://luci.criosweb.ro/riot/ Wednesday, March 21, 12
  18. Responsive Images • Adaptive Image http://drupal.org/project/adaptive_image Note: Does not work

    with CDNs or reverse proxies. • Responsive Images http://drupal.org/project/responsive_images Uses a special field formatter for images. • Adaptive Image Styles http://drupal.org/project/ais Requires alterations to .htaccess and JS. Wednesday, March 21, 12
  19. Remove Image Styles Metadata ImageMagick advanced module has an option

    to strip out metadata. http://drupal.org/project/imagemagick Wednesday, March 21, 12
  20. Gzip Everything When you send assets to the browser Gzip

    everything. Modern browsers (even IE 6) support accepting Gzip compression. • mod_deflate (for apache) • IIS (build in) • HttpGzipModule (nginx) Wednesday, March 21, 12
  21. 6 The number of parallel connections to a domain across

    all tabs and windows in desktop browsers. Wednesday, March 21, 12
  22. iOS 5 Android 2.2 Android 2.3 Blackberry 6 4 6

    5 • Android 2.2 has a 27.8% Android market share. • Android 2.3 has a 58.6% Android market share. • Android 4.x (ICS) has 1% Android market share. Max Connections Per Host Wednesday, March 21, 12
  23. Browser Server Round-trip Time (RTT) “the length of time it

    takes for a signal to be sent plus the length of time it takes for an acknowledgment of that signal to be received.” https://en.wikipedia.org/wiki/Round-trip_delay_time Wednesday, March 21, 12
  24. Enable CSS and JavaScript Aggregation In an unscientific random poll

    of DrupalCon attenders websites these were not enabled half the time. Not the first conference I’ve observed this at. Wednesday, March 21, 12
  25. “Adding an Expires header to your components with a date

    in the future makes them cacheable, reducing the load time of your pages. Certainly this should be done with images, but that's fairly typical. Go a step further and add it to scripts and stylesheets, too. This won't affect performance the first time users hit your page, but on subsequent page views it could reduce response times by 50% or more.” http://stevesouders.com/hpws/rule-expires.php Wednesday, March 21, 12
  26. What about caching and updating? So, you’ve updated an image

    or a sprite and you want that to download but your images are set to cache. Solution: Use a custom name for each update. For example append a character you increment or a date. Or, use a query string. This is what Google, Yahoo, and many others do. Wednesday, March 21, 12
  27. Warning: While desktop browsers generally have large caches, mobile browsers

    typically have a cache only several MB in size. Wednesday, March 21, 12
  28. 10x JavaScript on mobile devices (high end ones) takes about

    10x as long to execute on mobile devices compared to desktop computers. Wednesday, March 21, 12
  29. 512MB The amount of RAM in the iPhone 4s and

    iPad 2. Mobile devices typically have 1GB or less of RAM. This helps extend battery life. Wednesday, March 21, 12
  30. What Can We Do About It? Nothing Fancy with JavaScript

    JS has less performance and memory to work with. Simpler DOM A complicated DOM (divitis) uses more system resources. A simpler DOM has less objects in memory. Mobile Optimized Images They use less resources to render, manipulate, and keep in memory. Wednesday, March 21, 12
  31. Alternatives To Caching Local Storage Google, Bing, and others put

    assets in local storage. Manifest Appcache Designed for html5 apps these can tell a browser to store assets for long periods. If there isn’t much space to cache where else can we stick assets? Wednesday, March 21, 12
  32. What Else Can We Compress? HTMLCompressor http://code.google.com/p/htmlcompressor/ Minify HTML. In

    Drupal see hook_page_delivery_callback_alter and drupal_deliver_html_page. mod_pagespeed Apache module that automatically optimizes web pages and resources on them. JavaScript, CSS, and images aren’t the only things that can be compressed. Wednesday, March 21, 12
  33. Delayed JavaScript Evaluation All JavaScript included in a page needs

    to parsed and evaluated before it becomes available. jQuery on iPhone 4 takes 320ms to parse and evaluate. Lazy Evaluation waits until JS is needed to evaluate it. Wednesday, March 21, 12
  34. Update Your Linux Kernel http://samsaffron.com/archive/2012/03/01/why-upgrading-your-linux-kernel-will-make-your-customers-much-happier The Linux 3.3 kernel increases

    the TCP initial congestion window to 10. This can cut down the number of round trips to get data. Google and Microsoft already do this. Wednesday, March 21, 12
  35. Tools and Resources Page Speed https://developers.google.com/pagespeed/ Analyzes a website and

    generates suggestions. A website or browser plugin. Documentation details on suggestions. Mobile Perf Bookmarklet http://stevesouders.com/mobileperf/mobileperfbkm.php Tools to analyze on mobile and store data to analyze on desktop. Performance Articles http://code.google.com/speed/articles/ https://github.com/h5bp/mobile-boilerplate/wiki/Blog-and-Articles Articles about technologies related to performance. Wednesday, March 21, 12
  36. What did you think? Locate this session on the DrupalCon

    Denver website http://denver2012.drupal.org/program Click the “Take the Survey” link. Thank You! Wednesday, March 21, 12