background preloader

Performance

Facebook Twitter

The Website Obesity Crisis. Let me give you a concrete example.

The Website Obesity Crisis

I recently heard from a competitor, let’s call them ACME Bookmarking Co., who are looking to leave the bookmarking game and sell their website. While ACME has much more traffic than I do, I learned they only have half the daily active users. This was reassuring, because the hard part of scaling a bookmarking site is dealing with people saving stuff. We both had the same number of employees. They have an intern working on the project part time, while I dither around and travel the world giving talks.

We have similar revenue per active user. But where the projects differ radically is cost. I pay just over a thousand dollars a month for hosting, using my own equipment. So while I consider bookmarking a profitable business, to them it's a $4,000/month money pit. The point is that assumptions about complexity will anchor your expectations, and limit what you're willing to try. Our First Node.js App: Backbone on the Client and Server. Here at Airbnb, we’ve been looking curiously at Node.js for a long time now.

Our First Node.js App: Backbone on the Client and Server

We’ve used it for odds and ends, such as the build process for some of our libraries, but we hadn’t built anything production-scale. Until now. The Problem There’s a disconnect in the way we build rich web apps these days. In order to provide a snappy, fluid UI, more and more of the application logic is moving to the client. But all too often, it’s not so clean; application logic is somewhat arbitrarily split between client and server, or in some cases needs to be duplicated on both sides.

If you’ve seen my tech talk or last blog post, then all this should sound familiar. This Holy Grail approach is something we had dreamt about for a long time, but not having any experience with Node.js, we didn’t quite know where to start. Our Solution I’m proud to announce that we’ve launched our first Holy Grail app into production! The performance gains are an awesome side effect of this design. Improving performance on twitter.com.

To connect you to information in real time, it’s important for Twitter to be fast.

Improving performance on twitter.com

That’s why we’ve been reviewing our entire technology stack to optimize for speed. When we shipped #NewTwitter in September 2010, we built it around a web application architecture that pushed all of the UI rendering and logic to JavaScript running on our users’ browsers and consumed the Twitter REST API directly, in a similar way to our mobile clients. That architecture broke new ground by offering a number of advantages over a more traditional approach, but it lacked support for various optimizations available only on the server. Progressive enhancement is still important - JakeArchibald.com. About 5 years ago it felt like the progressive enhancement battle had been won, but after watching the reactions to Nicholas Zakas' "Enough with the JavaScript already" it seems all the old arguments are back with reinforcements.

Progressive enhancement is still important - JakeArchibald.com

Well, I'm wearing my angry-pants and I'm ready for a jog down ranty lane. This is not about users without JS If you turn JavaScript off, you're going to have a tough time on the web. If you remove the steering wheel from your car you're going to have a tough time going round corners. My advice: Leave the steering wheel where it is. Progressive enhancement has never been about users who've turned JavaScript off, or least it wasn't for me. Elevators vs escalators Christian Heilmann re-purposes a Mitch Hedberg observation to relate to progressive enhancement. Given the diversity of user agents, your JS failing isn't an edge case. Website Speed and Performance Optimization. Web Performance Optimization for the Enterprise. Web performance and quality analysis. Render-tree construction, layout, and paint. Reduce the size of the above-the-fold content  

This rule triggers when PageSpeed Insights detects that additional network round trips are required to render the above the fold content of the page.

Reduce the size of the above-the-fold content  

Overview If the amount of data required exceeds the initial congestion window (typically 14.6kB compressed), it will require additional round trips between your server and the user’s browser. For users on networks with high latencies such as mobile networks this can cause significant delays to page loading. Recommendations To make pages load faster, limit the size of the data (HTML markup, images, CSS, JavaScript) that is needed to render the above-the-fold content of your page. Structure your HTML to load the critical, above-the-fold content first. Performance is a Feature. We've always put a heavy emphasis on performance at Stack Overflow and Stack Exchange.

Performance is a Feature

Not just because we're performance wonks (guilty!) , but because we think speed is a competitive advantage. There's plenty of experimental data proving that the slower your website loads and displays, the less people will use it. [Google found that] the page with 10 results took 0.4 seconds to generate. WebPagetest - Website Performance and Optimization Test. Calibre.