Half a second delay caused a 20% drop in traffic
glinden.blogspot.com
glinden.blogspot.com
AAAAAA
CBBBBB
CBBBBB
CBBBBB
CDDDDD
CDDDDD
CDDDDD
CDDDDD
Most users will have their screen break a bit above the end of the B block. (By design.)
The heaviest part of the page is D. Eliminating it is not an attractive option -- the overall conversion rate suffers. The most valuable parts of the conversion pathway are in B and C. The first thing the customer sees is invariably A.
Solution: a bit of technical magic to make sure that the website loads element in A->C->B->D order (there is a competing technical imperative which means that in the HTML it makes more sense to order them A->B->D->C), and significant microoptimization of how quickly B and C are minimally interactive to the user. (We're talking measuring improvements in the kilobytes or tens of microseconds range.) Since customers have to actively scroll down to engage the D block, and since most do not engage the D block before first engaging the B block, the fact that D is heavy and slow very rarely impacts their experience.
That link is a talk on YSlow, a tool you can use to lower download speed, render time, and perceived load time. It's awesome.
That article also links to a great article called "Maximizing Human Performance" (http://www.asktog.com/basics/03Performance.html) which goes over a few topics, including response times and their perceived meaning and optimizing user flows for the human thinking process.
We used to have a webform that (in summary) asked the user what they wanted to download, how they got there, and how we can contact them later (as sales leads). Conversion ratio was fairly poor, so I refactored the priorities of what we were asking for into 2 forms.
The first form consisted of questions we HAD to know the answer to to service the user's request, and the second form consisted of info we wanted from them (name, email, contact info, etc.)
So between the first form and the second form, we'd kick off the download for the user (and show a progress meter at the top) -- which got them what they needed immediately, making the site seem faster overall.
Plus, since they were waiting for the download to complete anyway, the conversion goals for the information we wanted went way, way up as well.
Again, I didn't actually MAKE things faster, in fact, having to fill out 2 forms was significantly slower, but we kept users engaged and let them waste their idle cycles making us happy since we were already accomodating their request.
Known tricks are explicit sizes for tables and images. The HTML file itself is loaded fast so you can start reading while images are loading.
There's also the opposite method: preloading images so, once the needed items are in the browser, the page renders faster.
I wonder how it would work to preload the images for the initially visible part of a page and leave for later the ones that you must scroll to see.
I've read recently about using sprites for the graphics: one big image with a mosaic of little images used, then split using CSS. This trick reduces the number of HTTP requests.
Yahoo has an open source js library that does exactly that: http://developer.yahoo.com/yui/imageloader/
You could separate it into 2 segments. One portion of users not having used a website in a particular category and the other bucket being folks that had used such websites before. Let's take online travel websites as an example.
In both cases people had a good experience using the website which in turn was a combination of great design including crispness & information architecture, variable font sizes, great presentation of the most important information, a lot of user empathy, generally not making the user think and not surprising the user, heat maps of which areas of a webpage users are likely to look at, etc.
The technical aspects of it included, smaller webpage sizes, tons of caching by abstracting away personalized portions of the webpage, and thereby caching close to 70-95% of the webpage in the browser, using a CDN, compression, reducing RTT, using distributed dns, not accessing the database for requests if possible, having as many static components as possible, use of persistent connections, caching url query strings, and all the things mentioned in Y! performance guidelines.
For folks that had never used an online travel website, they compared the speed of a website to the ones they regularly used like google, rediff, yahoo, etc. For folks that had used an online travel website, the comparison was with the competition and how much better you were with the above aspects.
If you're going to come to some grand "Aha!" moment, you should define your experiment. Were these the same users? on the same day? searching for the same stuff? What browsers were they using? Did they have their windows maximized? What was their screen size? ... and so on.
I'd be more than willing to bet that they controlled for these variables you mention, else the test would be useless. Sure, it's right to be skeptical, but they do this for a living.
Given Google's stake in having accurate data, they probably bothered to do it correctly.
(And I am not usually a defender of Google.)
I guess that means they controlled for the other variables.
If that is what is happening, then I can see why Google would lose. That is, their main conclusion would be that people tend to check organic results first. If that's true then if a company that has to pay to be page 1 is organically moved there by increasing the number of results displayed, then G loses.
They check this by seeing if revenue goes up when they limit the results to 5 ads.
I'm not saying that speed isn't important for everyone, but having that killer feature, even if it slows down your site, might be what sets you apart from your competitors.
"Oh I am just doing this for your own good. You will thank me later." is one of the most evil attitudes that I know. I am not able to express clearly why I think so and why I feel so strongly[#] about it. May be it is coz I find it patronizing. Also I find it extremely unhackerly.
[#] My mind is screaming obscenities and I am feeling pretty angry.
Also - there is something to be said for wisdom.
I completely understand your objection to that phrase in a lot of adult situations. (Safety fence after safety fence, stopping people from hurting themselves with technical products, not letting you hack stuff). I get that completely. Lowest Common Denominator design sucks.
What I was asking was whether you apply that thought accross the board.. My mind particularly went to a Parent>Child relationship. Learning by experience (ie - getting burnt) is a great thing, but sometimes you can/should learn from others experience. Sometimes someone older/more experienced/with more wisdom -- can stop you doing something for your own good.
Perhaps seat-belt laws may be a good example?
Yeah, that is a totally different situation and I only have knowledge of one-side (child's POV) so far. My thought on the topic at the moment is that parents should definitely safe-guard children from life threatening and other irreversibly catastrophic situations. Other situations will mostly be a judgment call, erring on the side of freedom, rather than caution.
As Paul Buchheit said: advice = limited life experiences + over generalization
On seat belt law : http://en.wikipedia.org/wiki/Risk_compensation
BTW, I live in Washington state, which smothers you with its motherly laws.
When I have kids, one of my aims as a parent will be to try and err on the side of freedom. (Although I can see that will be a hard choice to make at points). Also - this was a good link I picked up off here/reddit recently: http://freerangekids.wordpress.com/
For some applications, this is important (e.g. gaming). For others, it could be a nice competitive advantage. But then with more & more of the ATM frames dedicated to QoS, that'll leave more contention (thusly, higher latency & drop) for the rest.
I'm just worried about who's going to use these facts for what ends.