[squid-users] min-fresh / max-stale not working?

From: Markus Karg <karg_at_quipsy.de>
Date: Tue, 2 Sep 2008 20:00:38 +0200

Dear SQUID Community,

it seems as if SQUID is not dealing correctly with "min-fresh" and
"max-stale":

Currently we are evaluating the use of SQUID-2.6-STABLE4. It all seems
to work pretty well, but just "min-fresh" and "max-stale" is not
working. Our client agent wants to guarantee to get data that is fresh
for a specific amount of time. So we provide "min-fresh=3500" and
"max-stale=0". To verify SQUID's behaviour we have programmed an origin
server the always responds with some static headers and entity data, and
a client that requests exactly that information, via SQUID as a proxy.
The client uses the Cache-Control header with a min-fresh=3500 and
max-stale=0 value, and the server is always sending data with a
max-age=3600 value. But the client gets from SQUID a 200 OK response
having max-age=3600 and Age=502! So, the current age of 502 plus the
desired min-fresh of 3500 is 4002, minus the max-stale of 0 still is
4002, what is much more than the max-age of 3600 -- so the request
cannot be satisfied without a warning, since the response will not be
fresh long enough! So we expect to get at least a Warning header. But
there is none! It looks like SQUID just ignores the min-fresh=3500 and
max-stale=0 headers!

The HTTP/1.1 specification says:
13.1.2 Warnings
Whenever a cache returns a response that is neither first-hand nor
"fresh enough" (in the sense of condition 2 in section 13.1.1), it MUST
attach a warning to that effect, using a Warning general-header.
also it says:
13.1.1 Cache Correctness
If a stored response is not "fresh enough" by the most restrictive
freshness requirement of both the client and the origin server, in
carefully considered circumstances the cache MAY still return the
response with the appropriate Warning header.

In the default case, this means it meets the least restrictive freshness
requirement of the client, origin server, and cache (see section 14.9)

So for me it looks as if SQUID is buggy, since it does not add the
mandatory Warning header. Can that be true? Or do I have to enable some
switch like "HTTP/1.1-Compliance = YES"?

Thanks!
Markus
Received on Tue Sep 02 2008 - 18:00:38 MDT

This archive was generated by hypermail 2.2.0 : Wed Sep 03 2008 - 12:00:02 MDT