After open sourcing Page Speed a few weeks ago, Google has launched a web site in an attempt to find ways and push the speed up process of the entire Internet. Google shares research data, web site speed optimization tutorials, recorded presentations on performance, links to lots of performance optimization tools, and a discussion group inviting everyone to share ideas on how to make the web faster.
Google Research has conducted a study on how page loading speed affects the number of searches (PDF) users perform over time. They introduced several controlled delays into the response:
After introducing the delays and monitoring the users for 4-6 weeks, they noticed the following drops in the number of searches:
While a 0.5% drop might not mean much for others, Google assures us that such a drop means a lot to them because there is a direct connection between the number of searches performed by users, the number of Ad Clicks displayed and the revenue. Beside speeding up its own web servers, Google wants the entire Internet to speed up considering that this process will have a positive outcome for them.
Google considers that besides bandwidth limitations there are several factors contributing to a relatively slow Internet:
- Websites that do not follow best practices in web development and are unnecessary slow
- Web servers are often not optimized for speed
- Several internet protocols were designed 10/15 years ago, when websites and web applications were different
- Browsers only recently started focusing on speed. Many Internet users are using slow browsers
How fast should the Internet be for Google? Move from one page to another as fast as turning pages in a glossy magazine. Allow video and graphical content flow as fast as necessary. Live collaboration between users not being hindered by the connection, including mobile ones. For that, Google wants to see HTML improved, and it is already being done with HTML 5, but they also would like to improve or even change HTTP and TCP with something better, a change that is quite difficult to implement considering the huge investments done so far in current infrastructure.
In an attempt to teach others how to speed up their sites, Google provides a number of tutorials:
-
CSS: Using every declaration just once
-
How gzip compression works
-
HTTP caching
-
Improving website performance with Page Speed
-
Minimizing browser reflow
-
Optimizing JavaScript code
-
Optimizing web graphics
-
PHP performance tips
-
Prefetching resources
-
Properly including stylesheets and scripts
-
Reducing the file size of HTML documents
-
User experience and site performance
They have also shared a list of tools coming from various sources:
Page Speed. Page Speed is an open-source Firefox/Firebug Add-on. Webmasters and web developers can use Page Speed to evaluate the performance of their web pages and to get suggestions on how to improve them.
AOL Page Test. AOL Page Test is an open source tool for measuring and analyzing web page performance using Internet Explorer.
Cuzillion. Cuzillion is a tool for quickly constructing web pages to see how components interact. Browsers have unexpected behavior in everyday situations. Sometimes the behavior differs across browsers. Cuzillion lets you observe these behaviors and share sample pages with others.
Fiddler 2. Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.
Firebug. Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.
Hammerhead. Hammerhead adds a tab to Firebug for measuring the load time of web pages.
httperf. Httperf is a tool for measuring web server performance. It provides a flexible facility for generating various HTTP workloads and for measuring server performance. The focus of httperf is not on implementing one particular benchmark but on providing a robust, high-performance tool that facilitates the construction of both micro- and macro-level benchmarks.
HttpWatch. Http Watch is an HTTP viewer and debugger that integrates with IE and Firefox to provide seamless HTTP and HTTPS monitoring without leaving the browser window.
IBM Page Detailer. IBM Page Detailer is a graphical tool that enables Web site developers and editors to rapidly and accurately assess performance from the client's perspective. IBM Page Detailer provides details about the manner in which Web pages are delivered to Web browsers. These details include the timing, size, and identity of each item in a page.
JSLint. JSLint is a JavaScript program that looks for problems in JavaScript programs. It is a code quality tool.
JSMin. JSMin is a filter which removes comments and unnecessary whitespace from JavaScript files.
Microsoft VRTA. The Visual Round Trip Analyzer tool helps web developers and testers visualize the download of their page, identify best practices and changes that improve web performance. VRTA examines the communications protocol, identifying the causes of excessive round-trips, and recommending solutions.
mon.itor.us. mon.itor.us provides personalized Ajax dashboard interface, checks server performance and availability, generates uptime reports, tracks visitors, checks CPU, memory and other systems resources, and alerts its users in case abnormalities are detected.
OOCSS. OOCSS allows you to write fast, maintainable, standards-based front end code.
Pylot. Pylot is a free open source tool for testing performance and scalability of web services. It runs HTTP load tests, which are useful for capacity planning, benchmarking, analysis, and system tuning. Pylot generates concurrent load (HTTP Requests), verifies server responses, and produces reports with metrics.
Smush It. Smush it uses image format specific non-lossy image optimization tools to squeeze the last bytes out of your images - without changing their look or visual quality. You'll get a report of how many bytes you can save by optimizing your images and all the changed images as a single zip for download.
Wbox. Wbox aims to help you having fun while testing HTTP related stuff. You can use it to perform many tasks, including the following: benchmarking how much time it takes to generate content for your web application, web server and web application stressing, testing virtual domains configuration without the need to alter your local resolver, checking if your redirects are working correctly emitting the right HTTP code, testing if the HTTP compression is working and if it is actually serving pages faster, use it as a configuration-less HTTP server to share files.
Yahoo! YSlow. YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. YSlow is a Firefox add-on integrated with the Firebug web development tool.
YUI Compressor. The YUI Compressor is JavaScript minifier designed to yield a higher compression ratio than most other tools.
Finally, the Google Speed web site contains a discussion group where others can share their own techniques and ideas used to speed up their portion of the web.
Related content on InfoQ: Google Has Open Sourced Page Speed.