Faster Firefox landing page increases download conversion by 15%
blog.mozilla.com
blog.mozilla.com
As an aside: It is a little disturbing to me that I'm ahead of Mozilla on the Internet technology adoption curve.
It feels dirty not to cache it, but if you look at a download waterfall and see how much time it takes to send that separate http request (while blocking the display of the page) it is well worth it.
I'm very much in group #2... everywhere except my landing pages.
In the case of a single site with a single product / purpose (ignoring Mozilla's other products), is there a generally agreed on explanation for what is going on here? Do people really change their mind about something as big as changing their web browser because of a delay of one-two seconds? Are these people marginal users and unlikely to actually finish installing it, or likely to abandon the browser after a single use?
I'd like a peek into the psychology of the marginal people in a scenario like this.
Running a one-sided Student’s t-test with a means difference of 14%, our experimental data yields a P value of 0.000051. This means that there is only a 0.0051% chance that we would obtain a 14% (or greater) improvement if the real effect wasn’t at least this large.
Err... Student's t doesn't assign a probability to P(measured>=14 | actual<14), it assigns one to P(measured>=14 | actual=14) under the assumption of equal variances (which here means actual=0, so clearly not applicable).
I figure that the actual effect is 16.05% +- 0.17%. And that's simply by assuming 145k is close enough to infinity, and for IE.html only.
That is, unless I'm mistaken about this, since I grok only the fairly basic stuff. Which is certainly plausible in and of itself.
I'd buy a bigger database machine, spread my servers to more geographical regions, whatever it took to try to bring that latency down.
Why make life hard. Buying a bigger database server costs actual money and time. Getting out the YSlow checklist and knocking two to three things off of it costs nothing and no significant amount of engineer time.
Gzip CSS/JS files: four lines in your Apache config, warm restart, done. Collapsing CSS/JS together: 16 characters (:cache => true) in Rails, warm restart, done. Spriting CSS images: open a web page, type a bit, copy/paste what it tells you to to development, push to staging, verify it works, done.
Moreover, as compared to buying a DB or spreading your servers, these are virtually guaranteed to actually work. Many, many of the suggestions that come under the heading "performance improvements" do not actually work because they address things that are not problems. (For example, unless you have data which convincingly demonstrates differently, the vast majority of websites can assume that the web stack is not a problem. Optimizing your code within the web stack is generally a hideously expensive waste of time.)
But really, Chrome is nice (and I occasionally use it), but it is still lacking extensions that I use on my main machine. Some of them (such as noscript) I hear wont be possible with Chrome's extension model.
And forget a/b testing - Google's Optimizer provides full multivariate testing, FREE.
We paid $10k a month to license a hosted multivariate test engine just 3 years from Optimost that was a piece of junk in comparison to that free tool . . .
Though perhaps they've got a blindspot in that they're more comfortable making changes in desktop code and so started there.
The front page loads with 10 HTTP requests on an empty cache, and doesn't have any user-perceptible blockage while waiting on elements. (Pulled this straight out of YSlow.)
Improvement is overkill, but if you wanted to:
1) Creates images{1,2}.ycombinator.com and split y18.gif, s.gif, and grayarrow.gif, and your JS and CSS files across the three domains. This will cause older browsers to load them all in parallel. (The HTTP spec suggests having no more than 2 requests to any one domain open at a time, so you end up with stairstep loading graphs on browsers which are spec-compliant, such as IE6. Browsers which have a more pragmatic view towards compliance with published specifications, such as Firefox 3, will do 8 ~ 10 requests in parallel.)
Note the balancing act in that every domain you add is another DNS query that needs to get resolved once. Ideally you want to keep it to about 4 domains or less.
2) Put far future expires headers on your static assets. You can bust caches by using the Rails-y filename.js?timestampOfLastModificationOfCode method.
But, again, this site is probably the fastest one I use on a regular basis, even from braindead clients like my Kindle. I wouldn't guess the marginal improvement is worth the expensive engineer time.
a) The CSS file should be inline.
b) The images should be done away with entirely by including them as a data uri.
c) For IE6-7 (data uris not supported) the fallback image should be sprited.
d) For bonus points (if you want HN to be served nearly instantly, globally) splurge for an application caching CDN provider like Akamai.
But perhaps that is just me. My use pattern here is at the extreme end of the distribution.
Not that I/we don't appreciate everything you do. I mean, this whole site is an act of charity so I guess I expect some bugs.
Also, I thought I remember a problem with reverse proxies and the hacker news server? Can't remember the specifics though.
When replying, often I'm returned to a random page instead of the one in the whence parameter. After making this comment, I was redirected to /threads?id=pg instead of to /item?id=1243793
The markup in comment threads is extremely broken in Mobile Safari -- font sizes change randomly, sometimes some of the vote arrows will randomly be huge or teeny-tiny.
Using Image() to generate GET requests for the vote links is at the very least stupid if not a bug, you should be making a POST using XHR -- and then you could get the new vote total in the response instead of mindlessly incr/decr-ementing the number in the DOM.
I could fix this by only loading stuff the moment I need to display it. Right now I load enough to generate 7 pages of threads, but people rarely click on the More link, so I'm dragging a lot of items into memory unnecessarily.
I'll try fixing this when I have time. Unfortunately I have to write a talk right now, and this is going to require turning some code inside out.
Aside from the threads issue everyone else has mentioned, I've noticed that apart from the main HTML, the co2stats tracker is the only part of the site that doesn't have proper cache-control headers and thus incurs a query every time (resulting in a 200 OK, not a 304 Not Modified, say); worse, the javascript portion can also take a while to load (up to 2 seconds), even though the returned content never actually seems to change. The co2stats image also never is cached. You should probably prod them to fix that (they're YC funded, right?).
When logged in, most things take a few seconds to load. I find myself opening things in new tabs and waiting to come back to them.
Threads, comments, all take a long time to load and often timeout.
Making a mistake in a comment costs 5-10 seconds, since you'll have to click on [edit].
Usable, but only just.
http://en.wikipedia.org/wiki/Long_Tail
until all Web browsers are equally easy to install, as the submitted article shows that Firefox is discovering to its chagrin.