# config/environments/production.rb
config.assets.compress = true
# true by default in rails
Minify CSS
& JavaScript
Slide 37
Slide 37 text
9157ms
Slide 38
Slide 38 text
8061ms
Slide 39
Slide 39 text
# config.ru
require ::File.expand_path('...', __FILE__)
use Rack::Deflater # add this line
run Giftoppr::Application
gzip
(html, css, javascript)
Slide 40
Slide 40 text
8061ms
Slide 41
Slide 41 text
7390ms
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
# Gemfile
gem "carrierwave-processing"
# app/uploaders/preview_uploader.rb
class PreviewUploader < CarrierWave::Uploader::Base
# ...
process :convert => "jpg"
process :strip
process :quality => 80
end
Compress Images
Slide 44
Slide 44 text
ImageOptim
Slide 45
Slide 45 text
Tip:
Use sprites or
font libraries for
small images.
# config/environments/production.rb
config.action_controller.asset_host =
"http://%d.assets.com"
# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.asset_host = lambda do
lambda do |file|
"http://%d.assets.com".gsub /%d/, (file.path.sum % 4).to_s
end
end
end
CDN (Multiple Hosts)
Slide 64
Slide 64 text
Tip:
DNS Prefetching
Slide 65
Slide 65 text
Tip:
Cookie-less
Domains
Slide 66
Slide 66 text
2079ms
Slide 67
Slide 67 text
1945ms
Slide 68
Slide 68 text
Goal Achieved
< 2 SECONDS!
Slide 69
Slide 69 text
Bonus Round!
Slide 70
Slide 70 text
SPDY for Static Assets
Slide 71
Slide 71 text
1945ms
Slide 72
Slide 72 text
1856ms
Slide 73
Slide 73 text
1856ms
9157ms
7301ms
We saved...
Slide 74
Slide 74 text
No content
Slide 75
Slide 75 text
# Gemfile
gem "turbolinks" # Default in Rails 4
Tip:
HTML5 History API
Slide 76
Slide 76 text
Danger!
3rd Party JavaScript
Slide 77
Slide 77 text
“Look at all
these social
buttons!
We need
those!!”
Slide 78
Slide 78 text
No content
Slide 79
Slide 79 text
1856ms
Slide 80
Slide 80 text
4716ms
Slide 81
Slide 81 text
Oh! Btw...
Slide 82
Slide 82 text
No content
Slide 83
Slide 83 text
Thanks!
@keithpitt @mariovisic
PS. We have Desktoppr Stickers.