Front end performance improvements
Upcoming SlideShare
Loading in...5
×
 

Front end performance improvements

on

  • 3,521 views

A Drupalcon Drupal core conversation on about Front End Performance we can make for Drupal 8.

A Drupalcon Drupal core conversation on about Front End Performance we can make for Drupal 8.

Statistics

Views

Total Views
3,521
Views on SlideShare
3,487
Embed Views
34

Actions

Likes
6
Downloads
43
Comments
0

2 Embeds 34

https://twitter.com 33
http://0.0.0.0 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Front end performance improvements Front end performance improvements Presentation Transcript

  • Tuesday, March 20, 12
  • Core Conversations Front End Performance Improvements Presented by Matt FarinaTuesday, March 20, 12
  • Hi, My name is Matt.You might know me as mfer. I’ve been Drupaling for almost 7 years. @mattfarinaTuesday, March 20, 12 View slide
  • Download the slides... http://www.slideshare.net/mattfarina http://speakerdeck.com/u/mattfarinaTuesday, March 20, 12 View slide
  • Why is Front End Performance Important?Tuesday, March 20, 12
  • We’ve Shown We Care About Performance • Numerous DrupalCon sessions on performance. • Memcache, APC, Boost, and numerous other performance modules. • Drupal 7 works well with reverse proxys. • Lots of internal optimizations in Drupal. • I could go on and on.... but....Tuesday, March 20, 12
  • The HTTP Archive measurement of where time spent generating a page happens for the top 50K sites. Front End Back End 13% 87% http://www.stevesouders.com/blog/2012/02/10/the-performance-golden-rule/Tuesday, March 20, 12
  • Front End Back End Front End Back End 15% 3% 85% 97% Desktop Mobile http://www.readwriteweb.com/hack/2011/06/mobile-page-response.phpTuesday, March 20, 12
  • “Yahoo! reported that making pages just 400 milliseconds slower resulted in a traffic drop of up to 9%.” * Google, Amazon, and others have found similar results. http://www.slideshare.net/stoyan/yslow-20-presentationTuesday, March 20, 12
  • In the post-PC era our sites aren’t just competing with other sites. They’re competing and working with with native apps.Tuesday, March 20, 12
  • Others working on Front End Performance • Browser manufacturers working on JS, DNS prefetching, and many other techniques. • Mobile networks (4g improvements over 3g) • New Protocols (SPDY) • Linux Kernel TCP Slow-Start ChangesTuesday, March 20, 12
  • 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-cemTuesday, March 20, 12
  • If we’re going to take performance seriously we need to improve on Front End Performance in Drupal.Tuesday, March 20, 12
  • Stuff We Do Well • Lossless compression of our images. • Aggregate our CSS and JS. Note, we can improve how we do this. • Extendable image handling.Tuesday, March 20, 12
  • Let’s Get Technical About What’s HappeningTuesday, March 20, 12
  • 4G will solve our mobile problems, right? http://www.flickr.com/photos/eliu500/5332240987/Tuesday, March 20, 12
  • Drupal is Worldwide 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.pdfTuesday, March 20, 12
  • Mobile phone network latency is 2-10x that of wired connections. http://www.slideshare.net/guest22d4179/latency-trumps-allTuesday, March 20, 12
  • TCP connections aren’t great for small files (all your non-media assets are small files). This is due to TCP slow start. http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-the-lower-bound-of-web-performance/Tuesday, March 20, 12
  • 6 The number of parallel connections to a domain across all tabs and windows in desktop browsers.Tuesday, March 20, 12
  • Tuesday, March 20, 12
  • 10x JavaScript on mobile devices (high end ones) takes about 10x as long to execute on mobile devices compared to desktop computers.Tuesday, March 20, 12
  • 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.Tuesday, March 20, 12
  • Part 1: Minify All Core JavaScriptTuesday, March 20, 12
  • Minification (also minimisation or minimization), in computer programming languages and especially JavaScript, is the process of removing all unnecessary characters from source code, without changing its functionality. These unnecessary characters usually include white space characters, new line characters, comments, and sometimes block delimiters, which are used to add readability to the code but are not required for it to execute. https://en.wikipedia.org/wiki/Minification_(programming)Tuesday, March 20, 12
  • Original 24% the Size Minified drupal.jsTuesday, March 20, 12
  • Others Minifying Their Production JS jQuery Dojo MooTools YUI SWFObject Ext jQuery UI Backbone Underscore Three.js Sharepoint WordpressTuesday, March 20, 12
  • Minify on the fly or ship with minified files? Answer: Ship with minifed filesTuesday, March 20, 12
  • jsmin-php v. UglifyJS • UglifyJS produces smaller files. drupal.js is 7% smaller. • jsmin-php no longer maintained. • UglifsJS no runtime cost. jsmin-php has runtime cost. drupal.js (.25s) and jquery.js (2.5s) are examples. • Some files (like jQuery ba-bbq) have a second license block half way through file. You can’t automate keeping these.Tuesday, March 20, 12
  • Add A Toggle To Performance Page This is a screenshot from jquery.com.Tuesday, March 20, 12
  • When Do We Update Minified Files? • When each full source JS file is changed? • At release time? A job of the person generating the release? • Automated via a script? We can work out the details in the issue queue.Tuesday, March 20, 12
  • Want Minified Core JS in D7? Speedy Module http://drupal.org/project/speedyTuesday, March 20, 12
  • Part 2: Use the JavaScript Module PatternTuesday, March 20, 12
  • Currently Switch To (function ($) { (function ($, Drupal) { // Our JS goes here. // Our JS goes here. })(jQuery); })(jQuery, Drupal); Oh look, dependency injection. http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-DepthTuesday, March 20, 12
  • What’s The Savings? The Original drupal.js = 13852 drupal.min.js = 3338 24% the size. Modified Version drupal.js = 13868 drupal.min.js = 3132 22.5% the size. Smaller Files and Larger % Savings.Tuesday, March 20, 12
  • Learn More About The Module Pattern! http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-DepthTuesday, March 20, 12
  • Part 3: Make JS and CSS Handling PluggableTuesday, March 20, 12
  • Example 1: google.com mobile Page assets are cached in local storage.Tuesday, March 20, 12
  • Example 2: Lazy Evaluation http://calendar.perfplanet.com/2011/lazy-evaluation-of-commonjs-modules/Tuesday, March 20, 12
  • Example 3: Bundled AggregationTuesday, March 20, 12
  • Let’s Make it Pluggable! http://drupal.org/node/352951Tuesday, March 20, 12
  • In Discussion: Assetic PHP 5.3 Asset (JS/CSS) Management https://github.com/kriswallsmith/assetic Note, the developer has offered to help.Tuesday, March 20, 12
  • Assetic Some  Good • Can tie in with minification if available. • Can use for Image lossless compression when packages available. • Filters, extensions, etc. • Sass, Stylus, Less, CoffeeScript. Needs  Works • No Aggregation. • Sass, Stylus, Less, CoffeeScript.Tuesday, March 20, 12
  • Part 4: Exclude CSS FilesTuesday, March 20, 12
  • “We tested our CSS and found 80% wasn’t being used.” * Terribly paraphrased from IRCTuesday, March 20, 12
  • Undocumented Hack stylesheets[all][] = system.menu.css stylesheets[all][] = system.theme.css stylesheets[all][] = system.message.css stylesheets[all][] = system.menu.cssTuesday, March 20, 12
  • Let’s Add A Documented Feature exclude-stylesheet[] = system.menu.css exclude-stylesheet[] = system.theme.css exclude-stylesheet[] = system.message.css exclude-stylesheet[] = system.menu.cssTuesday, March 20, 12
  • Learn  What  You  Can  Do  In  Your  Sites  Now Faster Mobile Sites Wednesday 3:45pm in Room MHB 1ATuesday, March 20, 12
  • Questions?Tuesday, March 20, 12
  • 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!Tuesday, March 20, 12