On Fri, Feb 20, 2009 at 5:51 PM, Brion Vibber <brion(a)wikimedia.org> wrote:
[snip]
On the other hand we don't want to delay those
interactions; it's
probably cheaper to load 15 messages in one chunk after showing the
wizard rather than waiting until each tab click to load them 5 at a time.
But that can be up to the individual component how to arrange its loads...
Right. It's important to keep in mind that in most cases the user is
*latency bound*.
That is to say that the RTT between them and the datacenter is the primary
determining factor in the load time, not how much data is sent.
Latency determines the connection time, it also influences how quickly
rwin can grow
and get you out of slow-start. When you send more at once you'll also be sending
more of it with a larger rwin.
So in terms of user experience you'll usually improve results by sending more
data if doing so is able to save you a second request.
Even ignoring the users experience— connections aren't free. There is
byte-overhead
in establishing a connection. Byte-overhead in lost compression by working with
smaller objects. Byte-overhead in having more partially filled IP packets. CPU
overhead from processing more connections, etc.
Obviously there is a line to be drawn— You wouldn't improve
performance by sending
the whole of Wikipedia on the first request. But you will most likely
not be conserving
*anything* by avoiding sending another kilobyte of compressed user
interface text for
an application a user has already invoked, even if only a few percent use the
additional messages.