The recent HTML5 Developer Conference in California brought together a diverse group of programmers and systems engineers curious about the emerging language for writing better Web applications including better entertainment and gaming applications for TVs, mobile devices and gaming consoles. One of the key themes was an interest in design patterns for improving the user experience.
Steve Souders, head performance engineer at Google, detailed many of the benefits and techniques for improving the user experience delivered via the Web. When Souders started exploring techniques for writing better browser clients in 2003, most of the existing focus was on back-end performance and scalability rather than on improving the user experience. Since then, there has been considerable evidence that writing better software for the client can increase customer satisfaction and revenues while reducing the cost of back-end systems.
The major search engines like Google, Yahoo! and Bing have found that even a drop of a few hundred milliseconds can reduce the frequency users return to a Website. Yahoo! found that a 400-millisecond delay resulted in a 5 percent to 9 percent drop in traffic per user. And these reductions in use can linger for six weeks after the Website has been sped up again.
Improving the client experience also can reduce the load on back-end servers along with the amount of money spent on back-end infrastructure. Netflix was able to reduce its spending on content distribution network services by 50 percent by turning on gzip compression in its Web client, which also improved Website load time by as much as 25 percent.
According to Souders, better metrics are the most important starting place when thinking about optimizing the Web client for performance. “If you are trying to improve something and if you are not measuring that improvement, you cannot justify the time spent improving it,” he added. However traditional measurement techniques don’t give an accurate view of the end-user experience.
As such, Souders suggested developers look at new timing specs being built into HTML5 (and already incorporated into Internet Explorer 9 and Chrome) that support navigation timing, user timing and resource timing. These provide a more accurate view into the impact of Website changes on real users who might be connecting on slower machines or via high-latency connections. However, there are a few security issues still being worked out to prevent organizations from spying on a user’s history that may slow the adoption of these specs across all browsers.
Souders also recommended that Web developers explore design patterns for running scripts asynchronously. Scripts are useful for providing interactivity within a Web page, but browsers have different behavior around waiting for a script to download before rendering the page. In extreme cases, this can cause a user to have to wait as long as two minutes for a script to download completely before showing anything from a particular Website. For this reason, it’s important to see how a script is executed across different of browsers using end-user metrics.