On Wed, 31 Oct 2007 12:31:39 +1300 (NZDT) "Amos Jeffries" <squid3@xxxxxxxxxxxxx> wrote: > > Hi there: > > I'm having some problems understanding how the refresh_pattern > > options works. > > The Squid guide says: > > > > > > FRESH if expires < now, else STALE > > STALE if age > max > > FRESH if lm-factor < percent, else STALE > > FRESH if age < min > > else STALE > > > > Min: > > time (in minutes), an object without an explicit expire time should > > be considered fresh. > > > > Percent: > > percentage of the objects age (time since last modification age) an > > object without explicit expire time will be considered fresh. > > > > Max: > > upper limit on how long objects without an explicit expiry time will > > be considered fresh. > > > > > > So, my question is this; if the object's age is between Min and Max, > > is it STALE or FRESH? > > That logic says STALE (!<min ... choosing else). No it doesn't, you have to follow the pseudocode through until you get a STALE/FRESH result, and then stop. If you can compute an lm-factor, then the "age < min" line can't be reached. Objects without an LM time cannot be refreshed, they have to be refetched; without a min setting such objects would not be cached at all. > IMHO, Max is there because max-age (given by server) CAN be less than > min (configured). "max" is ignored if the server supplies an expiry time, it's there to provide an upper-limit to how long a object can be kept fresh by its lm-factor. There are basically three classes of object: 1. with explicit expiry information (max/min/percent are ignored) 2. with LM, but no expiry - governed by percent and max. 3 with neither - governed by min ( Note that all of the above assumes that no refresh rule override options have been set.)