W3C home > Mailing lists > Public > http-caching-historical@w3.org > February 1996

Re: Variant IDs

From: Jeffrey Mogul <mogul@pa.dec.com>
Date: Wed, 07 Feb 96 16:25:03 PST
Message-Id: <9602080025.AA25505@acetes.pa.dec.com>
To: koen@win.tue.nl (Koen Holtman)
Cc: http-caching@pa.dec.com
    >So suppose we wanted to provide our corporate home page in each
    >of (say) 30 different natural languages, since we do business in
    >at least that many.  Can you give us an example of the most compact
    >possible encoding of that variant set in your proposed URI header?
    Here it comes:
	[lengthy URI: header deleted]
    >One issue is "how many bytes does this encoding require"?
    925 bytes.
[Note: I asked about 30 different languages, and you gave me only
20, so I assume that the actual byte-count is around 50% higher!]

    Show me a homepage title image that is smaller.  I don't
    really see a problem with 1K URI headers.  If you do see a problem:
    don't you have the same problem with 1K Variant-Set request headers?

Not necessarily.  For one thing, the cache does not need to transmit
a variant-id for each possible variant, only for the ones that are
currently in its cache (i.e., for the ones that should not be
retransmitted).  Also, the syntax could probably be a lot more
compact.  Even if the cache held 20 variants, the result would
look something like:

    Variant-set: id=l1;l1abcdef, id=l2;l2abcdef, id=l3;l3abcdef,
     id=l4;l4abcdef, id=l5;l5abcdef, id=l6;l6abcdef, id=l7;l7abcdef,
     id=l8;l8abcdef, id=l9;l9abcdef, id=l10;l10abcde, id=l11;l11abcde,
     id=l12;l12abcde, id=l13;l13abcde, id=l14;l14abcde, id=l15;l15abcde,
     id=l16;l16abcde, id=l17;l17abcde, id=l18;l18abcde, id=l19;l19abcde,

which is approximately 350 bytes (I'm not sure if the white space
after the ","s is necessary).  This assumes a 32-bit opaque validator
encoded in hex; one might use a larger validator or a more efficient
encoding, so "your mileage may vary".  But note that if the cache
currently holds only (for example) 2 variants, then the Variant-set:
header would look like

    Variant-set: id=l1;l1abcdef, id=l2;l2abcdef

which is a lot less than 925 bytes!

    You _could_ send short but varying URI headers like
    URI: {variant "home.l1.html" 1 {language "l1"}},
	    {variant "home.l8.html" 1 {language "l8"}},
	    {variant "home.l14.html" 1 {language "l14"}},
	    {vary Accept-Language}
    under my proposal, but I do not really see the point of doing so: it
    only limits the ability of the user to request versions in other

The main point is that people at the meeting on Friday (and previously)
have objected to design features that require transmitting huge numbers
of header bytes, since we expect a lot of low-bandwidth links (including
international or wireless) for the foreseeable future.

Several people also expressed concern about encoding variants in URIs,
for reasons that I cannot remember.  Perhaps they would like to state
these themselves?
    Another part of the question is: what is the best possible
    optimization if we do not have variant-set?  You can optimize the case
    by generating cachable(*) redirection (302) responses that redirect to
    cachable resources.  This is simple and gives optimal traffic savings,
    though at the expense of using two RTTs in the case that the cache is
    (*) Note that 302 responses are never cachable under the current 1.1
    draft, but this can (will?) change.
For those of you (like myself) who have not quite memorized the
spec, 302 == Moved Temporarily.

Received on Thursday, 8 February 1996 00:38:25 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 19:55:57 UTC