Hacker News new | comments | show | ask | jobs | submit login
Website Performance Tutorials (code.google.com)
79 points by champion on June 24, 2009 | hide | past | web | favorite | 14 comments

What I really would like to see is an independent third-party which cares nothing about data mining (maybe the w3c) host commonly used scripts (e.g. jquery) on Akamai and minified/compressed; all the parameters to their optimum instead of the myriad of options people use. They'd be so many browser cache hits.

For those who don't care about giving Google their traffic data and aren't already aware of this, Google offers the previously described service.


The jquery one only has a 1 year expiry time...

What does that mean?

When some server on the Internet gives your browser a file, it includes a metadata called an expiry header (actually, Expires:), which the browser is supposed to interpret as providing guidelines for caching. For example, if I tell you that this web page is good for until midnight tomorrow, and the user requests the same page later today, the browser can (but doesn't have to) serve the user the page out of the local cache, secure in the knowledge that I have told it I would not update the page until at least midnight tomorrow. Since this totally skips the HTTP request for the page the second time, it results in blazing bugs-in-your-teeth speed.

Saying JQuery's expiry time is 1 year in the future means that Google is telling browsers who get the JQuery script "Hey guys, you can rely on this being constant for a year, after that you'll probably want to ask for a new version." The poster above you apparently thinks this is suboptimal, because a user should be able to cache a particular version of JQuery for longer than one year. I think that it is irrelevant, since in actual practice almost no user agent will reliably persist a cache for a year, and 1 extra HTTP request a year isn't enough to worry about, anyway.

Can someone post performance tips for Python? Either links or just suggestions. I've been coding in Python for a couple weeks and I'm not sure about what tools I have at my disposal for identifying bottlenecks and subsequently how to address those bottlenecks.

My suggestion: your bottleneck is highly unlikely to be Python. Most web applications get to wait on DB access, network latency, and then browser rendering. All the backend optimization in the world just gets you to these bottlenecks faster.

(It is also a whole lot of black magic compared to front-end optimization. See any of the presentations by the YSlow guys -- google [high performance web sites] and look for the slides or videos. They give simple, tested, repeatable "do this and it will work" best practices. Backend optimization, on the other hand, relies far too much on handwavy lore and near-useless-or-actually-harmful micro-optimizations. For example, "StringBuffers are sooooooo much faster than String concatenation!")

"your bottleneck is highly unlikely to be Python. Most web applications get to wait on DB access, network latency, and then browser rendering"

I second that. My experience is first look into the DB time and second browser rendering. I have thought Python was the cause for slowness many times and each time it again proved to be DB time. Also, don't run multiple selects to the database for a set of records, make it one select.

I would expect something a lot more from google. All these ideas are way too elementary and some are just misguided. Advice like "crop your image"...come on. The misguided ones are things like "use single quotes instead of double quotes when printing in php since one does not look for variables in the string text". The is just misguided and is probably the last thing your should worry about. This is orders of magnitude from any useful optimization that is actually impacting your site performance.

Look through the rest also - the advice really varies. I found the part about avoiding browser reflow [1] very useful. Just last night, I was getting usability issues with a piece of JS which was executing with each keystroke and (I now realize) sometimes causing reflow. I fixed it, but now I know what was broken :)

1. http://code.google.com/speed/articles/reflow.html

I disagree; I thought the point about not copying variables in order to make the code look "cleaner" is a good point. I never considered that a malicious user might pass in 512kb worth of data into a textarea..

Good stuff, this must be a relatively new section.

I've also found Yahoo UI and performance section a great resource too. For better or worse, Yahoo! apps tend to be heavier on the design and graphics side so they have some good practices in place.


I can recommend to install Yahoo YSlow (http://developer.yahoo.com/yslow/), a Firebug extension for Firefox. next to the achieved performance test results of a specific page, it also shows how to improve the performance. I think it's a quite useful tool and perhaps a must-have extension for webdevelopers.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact