Front end performance improvements

Post on 16-May-2015

3032 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

Transcript

Tuesday, March 20, 12

Core Conversations

Front End Performance Improvements

Presented by Matt Farina

Tuesday, March 20, 12

Hi, My name is Matt. You might know me as mfer. I’ve been Drupaling for almost 7 years.@mattfarina

Tuesday, March 20, 12

http://www.slideshare.net/mattfarinahttp://speakerdeck.com/u/mattfarina

Download the slides...

Tuesday, March 20, 12

Why is Front EndPerformance Important?

Tuesday, March 20, 12

We’ve Shown We CareAbout 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

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.

Tuesday, March 20, 12

15%

85%

Front End Back End

3%

97%

Front End Back End

Desktop Mobile

http://www.readwriteweb.com/hack/2011/06/mobile-page-response.phpTuesday, March 20, 12

http://www.slideshare.net/stoyan/yslow-20-presentation

“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.

Tuesday, 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 onFront 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 Changes

Tuesday, March 20, 12

http://www.tealeaf.com/customer-experience-management/resource-center/register.php?doc=mobile-cem

85% of mobile users expect sites to load at least as fast as using a desktop

or laptop computer.

Tuesday, March 20, 12

If we’re going to take performanceseriously we need to improve onFront 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 AboutWhat’s Happening

Tuesday, March 20, 12

http://www.flickr.com/photos/eliu500/5332240987/

4G will solve our mobile problems, right?

Tuesday, March 20, 12

http://www.itu.int/ITU-D/ict/facts/2011/material/ICTFactsFigures2011.pdf

According to ITU (UN agency for information and communications technology) in 2011 we only had 45% of 3g or better coverage worldwide.

Drupal is Worldwide

Tuesday, March 20, 12

http://www.slideshare.net/guest22d4179/latency-trumps-all

Mobile phone network latency is 2-10x that of wired

connections.

Tuesday, March 20, 12

http://www.stevesouders.com/blog/2010/07/13/velocity-tcp-and-the-lower-bound-of-web-performance/

TCP connections aren’t great for small files (all your non-media assets are small

files). This is due to TCP slow start.

Tuesday, March 20, 12

6The number of parallel connections to a domain

across all tabs and windows in desktop browsers.

Tuesday, March 20, 12

Tuesday, March 20, 12

10xJavaScript on mobile devices (high end

ones) takes about 10x as long to execute on mobile devices compared to desktop

computers.

Tuesday, March 20, 12

512MBThe 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 JavaScript

Tuesday, 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.js

Tuesday, March 20, 12

Others Minifying Their Production JS

jQuery Dojo MooTools YUI

SWFObject Ext jQuery UI Backbone

Underscore Three.js Sharepoint Wordpress

Tuesday, March 20, 12

Minify on the fly or shipwith minified files?

Answer: Ship with minifed files

Tuesday, 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/speedy

Tuesday, March 20, 12

Part 2: Use the JavaScriptModule Pattern

Tuesday, March 20, 12

(function ($) {

// Our JS goes here.

})(jQuery);

(function ($, Drupal) {

// Our JS goes here.

})(jQuery, Drupal);

Switch ToCurrently

Oh look, dependency injection.

http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-DepthTuesday, March 20, 12

What’s The Savings?

The Originaldrupal.js = 13852drupal.min.js = 333824% the size.

Modified Versiondrupal.js = 13868drupal.min.js = 313222.5% the size.

Smaller Files and Larger % Savings.

Tuesday, March 20, 12

http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

Learn More About The Module Pattern!

Tuesday, March 20, 12

Part 3: Make JS and CSSHandling Pluggable

Tuesday, 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 Aggregation

Tuesday, March 20, 12

http://drupal.org/node/352951

Let’s Make it Pluggable!

Tuesday, March 20, 12

In Discussion: AsseticPHP 5.3 Asset (JS/CSS) Management

https://github.com/kriswallsmith/asseticNote, the developer has offered to help.

Tuesday, March 20, 12

AsseticSome  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 Files

Tuesday, March 20, 12

“We tested our CSS and found 80% wasn’t being used.”* Terribly paraphrased from IRC

Tuesday, March 20, 12

Undocumented Hack

stylesheets[all][] = system.menu.cssstylesheets[all][] = system.theme.cssstylesheets[all][] = system.message.cssstylesheets[all][] = system.menu.css

Tuesday, March 20, 12

Let’s Add A Documented Feature

exclude-stylesheet[] = system.menu.cssexclude-stylesheet[] = system.theme.cssexclude-stylesheet[] = system.message.cssexclude-stylesheet[] = system.menu.css

Tuesday, March 20, 12

Faster Mobile SitesWednesday 3:45pm in Room MHB 1A

Learn  What  You  Can  Do  In  Your  Sites  Now

Tuesday, March 20, 12

Questions?

Tuesday, March 20, 12

What did you think?Locate this session on theDrupalCon Denver website

http://denver2012.drupal.org/program

Click the “Take the Survey” link.

Thank You!

Tuesday, March 20, 12

top related