Squid_ The Definitive Guide - Duane Wessels [152]
The HTTP histogram shows the breakdown of freshness checks for client HTTP requests. For example:
HTTP histogram:
Count %Total Category
0 0.00 Fresh: request max-stale wildcard
0 0.00 Fresh: request max-stale value
173984 9.76 Fresh: expires time not reached
462757 25.97 Fresh: refresh_pattern last-mod factor percentage
42 0.00 Fresh: refresh_pattern min value
0 0.00 Fresh: refresh_pattern override expires
0 0.00 Fresh: refresh_pattern override lastmod
5521 0.31 Stale: response has must-revalidate
0 0.00 Stale: changed reload into IMS
0 0.00 Stale: request has no-cache directive
470912 26.43 Stale: age exceeds request max-age value
455073 25.54 Stale: expires time reached
65612 3.68 Stale: refresh_pattern max age rule
144706 8.12 Stale: refresh_pattern last-mod factor percentage
3274 0.18 Stale: by default
1781881 100.00 TOTAL
Note, the rules aren't necessarily evaluated in the order in which they appear in the table. Here's what each line means:
Fresh: request max-stale wildcard
Squid considers the cached response fresh because the request includes a max-stale directive without any value. For example:
GET /blah... HTTP/1.1
Cache-control: max-stale
According to RFC 2616: "If no value is assigned to max-stale, then the client is willing to accept a stale response of any age."
Fresh: request max-stale value
Squid considers the cached response fresh because the request includes a max-stale directive with a particular value, which is larger than the amount of time since the object expired.
Fresh: expires time not reached
Squid considers the cached response fresh because its expiration time has not yet been reached.
Fresh: refresh_pattern last-mod factor percentage
Squid considers the cached response fresh because it matches one of the refresh_pattern rules and has a last-modified factor (LM-factor) value that's less than that specified by the rule. See Section 7.7.
Fresh: refresh_pattern min value
Squid considers the cached response fresh because it matches one of the refresh_pattern rules and its age is less than the min value specified by the rule. See Section 7.7.
Fresh: refresh_pattern override expires
Squid considers the cached response fresh because it matched one of the refresh_pattern rules with the override-expire option. This option causes Squid to give precedence to the refresh_pattern minimum value over the object's expiration time. Note: using the override-expire option is a violation of RFC 2616.
Fresh: refresh_pattern override lastmod
Squid considers the cached response fresh because it matched one of the refresh_pattern rules with the override-lastmod option. This option causes Squid to give precedence to the refresh_pattern minimum value over the LM-factor value. Note: using the override-lastmod option is a violation of RFC 2616.
Stale: response has must-revalidate
Squid considers the cached response stale because it contains a Cache-Control: must-revalidate directive.
Stale: changed reload into IMS
Squid considers the cached response stale because it matches one of the refresh_pattern rules with the reload-into-ims option. With this option, Squid turns a request with Cache-Control: no-cache (or similar) into a cache validation. Note: using the reload-into-ims option is a violation of RFC 2616.
Stale: request has no-cache directive
Squid considers the cached response stale because the request contains a Cache-Control: no-cache directive.
Stale: age exceeds request max-age value
Squid considers the cached response stale because the request has a max-age directive, which is less than the response's age.
Stale: expires time reached
Squid considers the cached response stale because its expiration time has been reached.
Stale: refresh_pattern max age rule
Squid considers the cached response stale because it matches one of the refresh_pattern rules, and its age is greater than the max value specified by the rule.
Stale: refresh_pattern last-mod factor percentage
Squid considers the cached response stale