We've moved! Come visit our new blog:

Blog Archive

Thursday, June 04, 2009

Introducing Page Speed

At Google, we focus constantly on speed; we believe that making our websites load and display faster improves the user's experience and helps them become more productive. Today, we want to share with the web community some of the best practices we've used and developed over the years, by open-sourcing Page Speed.

Page Speed is a tool we've been using internally to improve the performance of our web pages -- it's a Firefox Add-on integrated with Firebug. When you run Page Speed, you get immediate suggestions on how you can change your web pages to improve their speed. For example, Page Speed automatically optimizes images for you, giving you a compressed image that you can use immediately on your web site. It also identifies issues such as JavaScript and CSS loaded by your page that wasn't actually used to display the page, which can help reduce time your users spend waiting for the page to download and display.

Page Speed's suggestions are based on a set of commonly accepted best practices that we and other websites implement. To help you understand the suggestions and rules, we have created detailed documentation to describe the rationale behind each of the rules. We look forward to your feedback on the Webmaster Help Forum.

YSlow seems already very good for this. I didn't used that as of now, but It may be duplicate of that, resulting it confusion to developers / users. In YSlow 2.0 there are 22 rules. We can also ad our own customized rule set (including what speed-test provides, if any new). Though I'll love to try speed-test to see what different Google did.

[ made this comment on another G blog, not sure where the correct place to give feedback is, so... ]

Only had a quick glance, but:

1) You state that Expires is more widely implemented than Cache-Control: max-age. On what do you base that? See also: http://www.mnot.net/blog/2007/05/15/expires_max-age

2) You advise to (almost) always set Cache-Control: public. That wastes bits; the only time you need to set public is when there are Authorization request headers being sent (i.e., HTTP auth is in use).By default, responses are implicitly public.

@Todd Seiber: We don't minify those libraries because those library maintainers choose not to release minified versions. For our libraries API, we only distribute libraries as is. You should file a bug with the Prototype team -- if they start releasing minified versions, we will host them as well.