Mark Nottingham wrote:
While digging around to create bug 2468, I started wondering about what ENTRY_NEGCACHED really means.

I interpret "negative caching" as "using a heuristic -- namely, that something is an HTTP error -- to make something cacheable." This is why I don't complain about the neg caching code being surrounded in #if HTTP_VIOLATIONS.

However, error responses can have an explicit freshness lifetime set in their headers, just like "normal" responses. In these cases, it seems to me that we shouldn't mark them as ENTRY_NEGCACHED, because we're *not* taking any liberty with their freshness.

I.e., I'm wondering if it makes sense to move
      EBIT_SET(e->flags, ENTRY_NEGCACHED);
to be part of
    if (expires == -1)
    expires = squid_curtime + cc.negative_ttl;
in storeNegativelyCache.

The most visible impact of this is that a 404 (etc.) response with a Cache-Control: max-age (or similar) would show up in logs as a TCP_HIT rather than TCP_NEGATIVE_HIT. From browsing the code, there would be a number of other smaller but I think sensible impacts (e.g., it can be put into a digest, and stats are cleaned up).

Thoughts?

You have a good point.

I don't think the POS/NEG should be combined though. NEGCACHED has clear info for debugging websites which return error pages.

A better way would be to add a third state STALE or somesuch, for the actual violations.

Just my 2c.

Amos
--
Please use Squid 2.7.STABLE4 or 3.0.STABLE9

Reply via email to