Object Life Cycle
In this section, I provide a few clues into the temporal characteristics of web objects. By analyzing Squid’s store.log files, we can see how old an object is when it enters the cache, when it was last modified, and when it expires.
Age, expiration, and modification time calculations depend on
the presence of certain HTTP headers. The Date header
is quite common, but the Expires header is rare. If a header
is missing or invalid, the response is not included in
the analysis.

Figure A-10. Distribution of object ages, modification, and expiration times (IRCache data)
In Figure A-10, you’ll see cumulative
distribution (CDF) plots for object age, time since
modification, and time until expiration. Age values are taken
from the HTTP Age header or, in most cases,
by subtracting the Date header value from the current time.
Whenever a cache receives a response from an origin server,
the object’s age should be zero. However, the age may be
nonzero for one or more of the following reasons:
The origin server’s clock may be wrong. Even if the response is generated at the current time, the server’s
Dateheader may be in the future or the past by a significant amount. In this analysis, negative age values are discarded.The response may have been served from a neighbor cache rather than the origin server. Most IRCache proxies have neighbors, so it’s likely that about 5% of requests ...