With Google incorporating a “website speed” factor into site rankings, it has created renewed interests in rendering performance of web sites/apps. As a techie who has spent most of her career around web app delivery & performance, I’d like to highlight some (known) techniques and offer a few insights.
Steve Souder identified 14 rules in his book for optimizing the performance of any given web page:
- Make Fewer HTTP Requests
- Use a Content Delivery Network
- Add an Expires Header
- Gzip Components
- Put Stylesheets at the Top
- Put Scripts at the Bottom
- Avoid CSS Expressions
- Reduce DNS Lookups
- Avoid Redirects
- Remove Duplicates Scripts
- Configure ETags
- Make Ajax Cacheable
As web applications become more complex and database-driven, a sluggish backend may completely negate any performance gains from client-side optimization. Back in 2003 when I managed the World Health Organization’s website, we employed a CMS tool that published all the content in static html. This allowed us to deliver a large quantity of (frequently updated) content without needing to scale out the CMS to handle millions of requests.
Now, this approach isn’t quite appropriate for the interaction-driven web applications today. Most of the web content is now user-specific and changes on a request-by-request basis. Instead, application architects must take performance & scaling into consideration at the design phase. Nati Shalom highlighted 3 key areas for consideration:
- Improve Data Speed and Scaling
- Improve Dynamic Page Load Time
- Use On-Demand Scaling to Ensure Latency Under Load
Software & hardware choices will also have tremendous impact in server-side optimization. Performance trade-offs will impact an architect’s decision to choose Infrastructure-As-A-Service (EC2, Azure, Joyent) over Platform-As-A-Service (AppEngine, Force.com, Engine Yard).
This is also an era where someone else’s poorly performing application will impact our own. As we rely on ads, widgets, & 3rd party API calls, our application is as fast as the slowest external plugin. A poor performing ecosystem can derail the adoption of an otherwise great & innovative application.
I do love swimming in the sea of web application performance (or rather, the pond). As Nati Shalom puts it, the focus on website performance makes business sense in “justifying why we should use better architecture” and delivers “real business value.”