22. @jonoalderson #TheInbounder
HSTS
● Become compliant by adding extra HTTPS checks
● Register for the HSTS the preload list (hstspreload.org)
● Skip the HTTP/HTTPS redirect when people type example.com
29. @jonoalderson #TheInbounder
With HTTP2, you
don’t need to worry
as much about
round trips...
...but you should
still consider what
you’re transferring,
and how.
@jonoalderson #TheInbounder
30. @jonoalderson #TheInbounder
For devices...
● Detect early, and adapt. Responsive = expensive!
● Make CSS mobile-first (build up from min-width); typically reduces sizes.
○ Conditionally layer on / load more for larger devices.
30
30
@jonoalderson #TheInbounder
41. @jonoalderson #TheInbounder
Which metrics matter?
● There’s no such thing as ‘speed’. What are we measuring?
● Numbers from Google Pagespeed Insights, Pingdom,
WebPageTest, GA, etc, are all nonsense
● User satisfaction metrics > any technical speed metrics
@jonoalderson #TheInbounder
44. @jonoalderson #TheInbounder
Which metrics matter?
● Don’t ignore, or get fixated on time ‘til first byte.
● You need to fix the front end and the back end.
@jonoalderson #TheInbounder
56. @jonoalderson #TheInbounder
Options for handling
angular/react sites...
1. Hope for the best
2. Serve static HTML versions, then let the framework pick up
the heavy lifting (using something like or PhantomJS)
3. Use something like Prerender.io (paid, or self-hosted).
57. @jonoalderson #TheInbounder
● There comes a point where you outgrow a single server.
● If you’ve finite RAM and CPU, consider separating servers and
databases. Latency, however!
● Consider caching, varnish, load-balancers
Server Ecosystems
68. @jonoalderson #TheInbounder
CDNs are still important
● Localisation is important!
● Latency is a bottleneck more often than you’d think.
● Cookieless subdomains reduce header sizes!
● Use resource CDNs (eg., cdnjs.cloudflare.com) for things like jQuery.
● Your first line of defense.
70. @jonoalderson #TheInbounder
Above the fold (critical path) rendering
● Reduces waiting time for the
browser to download assets
● ...but can’t be (easily) cached!
● loadCSS is your friend
(async loading and js support)
https://github.com/filamentgroup/loadCSS
● Takes advantage of rel preload
http://bit.ly/criticalpathcss
71. @jonoalderson #TheInbounder
(Re)paint & (Re)flow
● Consider how the page is constructed
and how it behaves
● Minimise unknowns to reduce tearing
and reflow in particular
● Small technical gains, big perception
gains
https://developers.google.com/speed/articles/reflow
73. @jonoalderson #TheInbounder
Animation & FPS
● jQuery, scrolling and changing elements costs GPU and CPU
● Consider the user’s physical hardware
● To maintain 60fps, you frame animations need to execute in less than 14ms.
● Transformation and opacity are the only ‘free’ animations.
● Measure with Chrome, and kick your devs!
74. @jonoalderson #TheInbounder
Deferring / async resources
● Do you need to load everything immediately?
● Do you need to load everything in the <head>?
● Do you need to load everything on every page?
● Do you understand the dependencies?
● What can you defer, load asynchronously, or load conditionally?