Re: [PATCH] Key header support in ESI responses and old ESI Vary bug, fixed.

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Wed, 20 Mar 2013 23:12:56 -0600

On 03/20/2013 09:34 PM, Amos Jeffries wrote:

> The attached patch adds the Key: header on Squid generated ESI responses
> so that any receiving clients which support the new header are able to
> use it for handling our pages.

I do not understand how a receiving client can actually use the Key
header if it is the same as the Vary header, which will be the common
case after this patch is applied. Can you clarify why we want to send
both Vary and Key header fields with identical values?

> + String strVary(rep->header.getList(HDR_VARY));
> if (!strVary.size() || strVary[0] != '*') {
> - rep->header.putStr (HDR_VARY, tempstr);
> + rep->header.putStr(HDR_VARY, &tempstr[1]));
> + }
> +
> + String strVaryKey(rep->header.getList(HDR_KEY));
> + if (!strVaryKey.size()) {
> + rep->header.putStr(HDR_KEY, &tempstr[1]);
> }

When strVary[0] is '*', will the above code essentially overwrite a very
strong

   Vary: *

with a much weaker

   Key: Host

(for example) because Key takes priority over Vary?

Similarly, when strVary is not "*" and is not empty, are we not
overwriting that whole Vary value with a potentially much weaker Key?

It is also strange that we do not want to _add_ Vary values to existing
ones. Is this some kind of ESI-specific logic? I would think that, in
general, if we know that the responds depends on Cookie, we should add
Vary: Cookie regardless of whether there was another Vary header there
already. Same for Key, I guess.

Both strVary and strVaryKey can be declared const.

Please s/strVaryKey/strKey/ for consistency if possible.

> Due to the complexity of identifying which values are actually
> considered we cannot at this stage emit any Key flags to narrow down the
> caching choices. That is marked as a TODO

In that TODO, please use official terminology and call them "modifiers"
rather than "flags".

Thank you,

Alex.
Received on Thu Mar 21 2013 - 05:13:01 MDT

This archive was generated by hypermail 2.2.0 : Thu Mar 21 2013 - 12:00:08 MDT