Re: Header Table and Static Table Indicies Switched

> Literal fields with indexing have only 6 name bits available, so only 2 1
> bytes dynamic field name entries are available.   However, if the field
> value is changing every request, then an encoder should not be using the
> indexed encoding anyway, as the field will not be used again.   This
> encoding should only be used for fields that are expected not to change ie
> ones that do not need a name index encoding.   Perhaps this encoding can be
> used occasionally for a changing field to get a custom name into the header
> table for use with literal fields without indexing, but that is not a high
> frequency occurrence.

It is a high frequency occurrence when, just not on the public side of
the infrastructure. We tag every request with 16 headers that are of
the form:

X-Some-Very-Large-Header-Name: someSmall#

Since the names here are much larger than the values that change it is
worth putting these in the header table and keeping them there.


>
> Literal fields without indexing have only 4 name bits available, so
> regardless of the index ordering, many (most?) name indexes are going to be
> 2 bytes.    But at least the some common names of fields with changing
> values  (eg :path) will be 1 byte.  Note that an argument could be made to
> reorder the static table so other known fields with changing values (eg
> content-length and  if-modified-since) will have index's <16, but I'd like
> to see some data first to indicate that any such changes are significant.

The majority of headers that I send are not the "common" once since
these get replaced with internal values for processing. None of which
are in the static table.

> I stand by to run the numbers on any data set that anybody can make
> available to me.    I do have access to some live header streams, but
> nothing that would make any significant usage of custom headers.

Importantly though, for those headers in the static table that you do
use and insert into the header table, you can use those names at the
lower index.

So :authority for example, since it is likely to be common between
requests, will be inserted and then you can reference it again with 1
byte.

Received on Saturday, 2 August 2014 15:26:36 UTC