- From: Willy Tarreau <w@1wt.eu>
- Date: Fri, 24 Oct 2014 21:39:45 +0200
- To: Mark Nottingham <mnot@mnot.net>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
On Fri, Oct 24, 2014 at 08:56:08PM +0200, Willy Tarreau wrote:
> I have not yet tried to modify your program to vary the output between a
> browser (less custom) or a partner site (more custom). But I wanted to share
> these results already as I think they can be helpful.
OK so I did experiment a bit with it, by changing numCustom, randPortion,
and the header length in xrange() (which I couldn't manage to make random,
I don't know python unfortunately so I stopped after a few failed attempts).
BTW, your program is east to tweak, I like the ability to play with the
random ratio :-)
With 0 custom header, both option3 and its revision show exactly
identical encoding size as draft-09. Things start to diverge as we
add some custom headers, make them random, and/or shrink them.
Here are a few measures :
1 custom, 0 random
==================
Draft09 Option3 Option3-rev
Out Bytes 290515 290516 290515
Comp ratio 0.127440 0.127441 0.127440
Avg int len 1.000000 1.000014 1.000000
10 custom, 0 random
==================
Draft09 Option3 Option3-rev
Out Bytes 380494 380495 380494
Comp ratio 0.051046 0.051046 0.051046
Avg int len 1.000000 1.000006 1.000000
10 custom, 1 random (40 chars)
==============================
Draft09 Option3 Option3-rev
Out Bytes 807817 800899 800154
Comp ratio 0.108350 0.107422 0.107322
Avg int len 1.268482 1.228282 1.223953
10 custom, 5 random (40 chars)
==============================
Draft09 Option3 Option3-rev
Out Bytes 2317974 2267884 2264295
Comp ratio 0.310991 0.304270 0.303789
Avg int len 1.347906 1.119018 1.102618
10 custom, 9 random (40 chars)
==============================
Draft09 Option3 Option3-rev
Out Bytes 3642593 3554173 3548090
Comp ratio 0.488855 0.476989 0.476172
Avg int len 1.391184 1.051465 1.028093
10 custom, 10 random (40 chars)
==============================
Draft09 Option3 Option3-rev
Out Bytes 3775212 3683286 3676886
Comp ratio 0.506571 0.494236 0.493378
Avg int len 1.395324 1.048590 1.024449
10 custom, 1 random (15 chars, like an IP address)
==================================================
Draft09 Option3 Option3-rev
Out Bytes 619601 612145 611510
Comp ratio 0.086027 0.084992 0.084904
Avg int len 1.380320 1.336844 1.333141
10 custom, 5 random (15 chars, like an IP address)
==================================================
Draft09 Option3 Option3-rev
Out Bytes 1315119 1266085 1262805
Comp ratio 0.211944 0.204041 0.203513
Avg int len 1.396611 1.170302 1.155164
10 custom, 9 random (15 chars, like an IP address)
==================================================
Draft09 Option3 Option3-rev
Out Bytes 1890435 1802153 1796431
Comp ratio 0.363410 0.346439 0.345339
Avg int len 1.409927 1.068155 1.046003
10 custom, 1 random (4 chars like for "True", "On", "off", "none", ...)
=======================================================================
Draft09 Option3 Option3-rev
Out Bytes 537138 529401 528759
Comp ratio 0.075722 0.074632 0.074541
Avg int len 1.434113 1.388931 1.385182
10 custom, 5 random (4 chars like for "True", "On", "off", "none", ...)
=======================================================================
Draft09 Option3 Option3-rev
Out Bytes 867352 818404 815336
Comp ratio 0.153420 0.144762 0.144219
Avg int len 1.422646 1.195593 1.181362
10 custom, 9 random (4 chars like for "True", "On", "off", "none", ...)
=======================================================================
Draft09 Option3 Option3-rev
Out Bytes 1111734 1023424 1018046
Comp ratio 0.263832 0.242875 0.241598
Avg int len 1.418619 1.075517 1.054622
10 custom, 10 random (4 chars like for "True", "On", "off", "none", ...)
=======================================================================
Draft09 Option3 Option3-rev
Out Bytes 1017368 924432 918561
Comp ratio 0.263935 0.239825 0.238302
Avg int len 1.417041 1.064313 1.042030
Note that at this point, we've reached 10% savings on the wire!
So I guess that if Jeff is using a lot of custom headers as he says,
he might very well have observed a significant degradation. It's worth
noting that the encoded integer length quickly reaches high levels as
soon as there are a few random custom headers in draft-09. The shorter
these custom headers, the higher the impact of the integer encoding.
In the last example above, an average request was 102 bytes with
draft-09 and only 92 with the proposals. That's 10 bytes saved per
request for only 10 short custom headers. I think it's worth studying
that option.
Best regards,
Willy
Received on Friday, 24 October 2014 19:40:10 UTC