On 16 Oct 2010, at 7:22 AM, Ruediger Pluem wrote:
It's because if we don't do this, the very first user who sends
"Cache-Control: no-cache" will cause the entry to become invalidated,
Hm. Invalidated? We might have no stale entry, so what I am asking
about is the
case of a fresh 5xx response with no previous stale entry. Why do we
remove
cache->remove_url_filter in this case?
The url_filter's job is to invalidate and physically remove the
existing entry. We add the url_filter very early on, and then when
we're certain we have no need to remove the existing entry, we remove
the filter.
The cache->stale_handle value doesn't tell us whether a stale entry is
present or not. Instead, it tells us that when we tried to open the
existing entry, and we looked at the headers in the entry, and the
headers provided by the client, we eventually concluded that in this
specific case, we should consider the content stale. If the client
said "Cache-Control: no-cache", we wouldn't have even tried to open
the existing file at all, and cache->stale_handle would always be NULL.
Regards,
Graham
--