+ All Categories
Home > Technology > Asset Redux - Front end performance on Rails (Phil Nash)

Asset Redux - Front end performance on Rails (Phil Nash)

Date post: 21-Jan-2015
Category:
Upload: future-insights
View: 144 times
Download: 4 times
Share this document with a friend
Description:
Slides from Phil Nash's presentation at the London Web Meet-up - http://londonweb.org Speaker Phil Nash is a developer evangelist for Twilio and a Ruby and JavaScript developer. He loves test coverage, great beer, hackathons, and gems with puns in their names. Get all four together for maximum points. He once made a pull request to Rails... it's still open ;) Overview of session: Web application speed is paramount. Our users want our application and they want it now! We can optimise application code, database queries and so on, but that's all wasted if the page takes ages to appear. A fast back end and a slow front end can end up leaving a bad taste in the mouth. Using Rails, we'll look at the best ways to speed up the delivery of your application. Going beyond just minifying our assets, we'll look at techniques to get our site in the user's browser quicker, improving both real and perceived speed. We'll also discover the best tools to use to check out speed and get a better idea of the user's opinion of the site.Once finished, our sites will load in a flash!
Popular Tags:
51
ASSET REDUX London Web — August 2014
Transcript
Page 1: Asset Redux - Front end performance on Rails (Phil Nash)

ASSET REDUXLondon Web — August 2014

Page 2: Asset Redux - Front end performance on Rails (Phil Nash)

Phil Nash@philnash

[email protected]

Page 3: Asset Redux - Front end performance on Rails (Phil Nash)

PERFORMANCE &RAILS

Page 4: Asset Redux - Front end performance on Rails (Phil Nash)

FRONT ENDPERFORMANCE

Page 5: Asset Redux - Front end performance on Rails (Phil Nash)

Why front end performance?

•  Sites are getting bigger•  More people are going mobile•  I'm a busy person

Page 6: Asset Redux - Front end performance on Rails (Phil Nash)

Top 1000 sites

Month/Year Average page size Average number of requests

June/2011 690kB 85

June/2014 1492kB 108

Source: http archive

Page 7: Asset Redux - Front end performance on Rails (Phil Nash)

Why Rails?

•  It's what I know

Page 8: Asset Redux - Front end performance on Rails (Phil Nash)

Why Rails?

But seriously...

Page 9: Asset Redux - Front end performance on Rails (Phil Nash)

WHY AM I TALKINGABOUT THIS?

Page 10: Asset Redux - Front end performance on Rails (Phil Nash)
Page 11: Asset Redux - Front end performance on Rails (Phil Nash)
Page 12: Asset Redux - Front end performance on Rails (Phil Nash)

PERFORMANT BYDEFAULT

Page 13: Asset Redux - Front end performance on Rails (Phil Nash)

TOOLS

Page 14: Asset Redux - Front end performance on Rails (Phil Nash)

Tools

•   WebPageTest•   Google PageSpeed Insights•   YSlow•   Real User Monitoring

Page 15: Asset Redux - Front end performance on Rails (Phil Nash)

The problems

•  Bandwidth•  Latency•  User attention

Page 16: Asset Redux - Front end performance on Rails (Phil Nash)

Delay User perception

0-100ms Instant

100-300ms Small perceptible delay

300-1000ms Machine is working

1000+ms Likely mental context switch

10000+ms Task is abandoned

Source: High performance browser networking

Page 17: Asset Redux - Front end performance on Rails (Phil Nash)

FAST FRONT ENDS

Page 18: Asset Redux - Front end performance on Rails (Phil Nash)

WARNING!

Page 19: Asset Redux - Front end performance on Rails (Phil Nash)

TEXT ASSETS

Page 20: Asset Redux - Front end performance on Rails (Phil Nash)

CONCATENATE ANDMINIFY

Thanks asset pipeline!

Page 21: Asset Redux - Front end performance on Rails (Phil Nash)

CHOOSE WHAT TOCONCATENATE

Page 22: Asset Redux - Front end performance on Rails (Phil Nash)

GZIPThanks asset pipeline!

Page 23: Asset Redux - Front end performance on Rails (Phil Nash)

I <3 ASSETPIPELINE

Page 24: Asset Redux - Front end performance on Rails (Phil Nash)

nginx

location ~ ̂/(assets)/ {

root /path/to/public;

gzip_static on; # to serve pre-gzipped version

expires max;

add_header Cache-Control public;

}

Source: RailsGuides

01.

02.

03.

04.

05.

06.

Page 25: Asset Redux - Front end performance on Rails (Phil Nash)

Heroku

•  heroku_rails_deflate•  rack-zippy

Page 26: Asset Redux - Front end performance on Rails (Phil Nash)

CACHE HEADERS

Page 27: Asset Redux - Front end performance on Rails (Phil Nash)

nginx

location ~ ̂/(assets)/ {

root /path/to/public;

gzip_static on;

expires max;

add_header Cache-Control public;

}

01.

02.

03.

04.

05.

06.

Page 28: Asset Redux - Front end performance on Rails (Phil Nash)

Heroku

MyApp::Application.configure do

config.serve_static_assets = true

config.static_cache_control = "public, max-age=31536000"

end

01.

02.

03.

04.

Page 29: Asset Redux - Front end performance on Rails (Phil Nash)

THE DOM AND THECSSOM

Page 31: Asset Redux - Front end performance on Rails (Phil Nash)

CSS IN THE HEADJS AT THE BOTTOM

Page 32: Asset Redux - Front end performance on Rails (Phil Nash)

TURBOLINKS

Page 33: Asset Redux - Front end performance on Rails (Phil Nash)

TURBOLINKS

Page 34: Asset Redux - Front end performance on Rails (Phil Nash)

CSS and the critical path

Inline the CSS required for above the fold in the headLoad the rest at the bottom

Patrick Hamann on CSS and the critical path

The Guardian team load CSS from localStorage

Critical path CSS generator

Page 35: Asset Redux - Front end performance on Rails (Phil Nash)

IMAGES

Page 36: Asset Redux - Front end performance on Rails (Phil Nash)

LOSSLESSCOMPRESSION

Page 37: Asset Redux - Front end performance on Rails (Phil Nash)

Assets

Get the asset pipeline to do it!

sprockets-image_compressor

Page 38: Asset Redux - Front end performance on Rails (Phil Nash)

Uploads

Plugins!

paperclip-optimizer

carrierwave-imageoptimizer

Page 39: Asset Redux - Front end performance on Rails (Phil Nash)

PROGRESSIVEJPEGS

Page 40: Asset Redux - Front end performance on Rails (Phil Nash)

Source: Book of speed

Page 41: Asset Redux - Front end performance on Rails (Phil Nash)

Assets

Get the asset pipeline to do it!

image_optim

Page 42: Asset Redux - Front end performance on Rails (Phil Nash)

Paperclip

has_attached_file :image, {

:styles => {

:progressive => '1x1<'

},

:convert_options => {

:progressive => '-interlace Plane'

}

}

01.

02.

03.

04.

05.

06.

07.

08.

Page 43: Asset Redux - Front end performance on Rails (Phil Nash)

INLINING

Page 44: Asset Redux - Front end performance on Rails (Phil Nash)

Inlining

rails-sass-images

.mail a {

background-image: inline("svg/mail.svg");

}

01.

02.

03.

Page 45: Asset Redux - Front end performance on Rails (Phil Nash)

HTTP 2.0

Page 46: Asset Redux - Front end performance on Rails (Phil Nash)

SPDY

Page 47: Asset Redux - Front end performance on Rails (Phil Nash)

HTTP 2.0/SPDY Features

•  Single connection - multiplexed streams•  Request prioritization•  Server push

Page 48: Asset Redux - Front end performance on Rails (Phil Nash)
Page 49: Asset Redux - Front end performance on Rails (Phil Nash)

Fixing for SPDY

•  Stop concatenating/inlining

Page 50: Asset Redux - Front end performance on Rails (Phil Nash)

THANKS

Page 51: Asset Redux - Front end performance on Rails (Phil Nash)

Questions?@philnash

[email protected]


Recommended