refresh_pattern review

From: Doug Dixon <doug.dixon@dont-contact.us>
Date: Thu, 1 Jun 2006 20:06:37 +1200

Hi

I'm fixing bug 1202 (it's a simple fix) and am cleaning up refresh.cc
at the same time.

I'd like to review the various refresh_pattern options, as some of
them are mutually exclusive in practice (although you can configure
all of them) and it's not clear from the documentation what they all
mean. They're quite hard to understand and use correctly.

1. reload-into-ims

The following is legal:

refresh_pattern html$ 5 20% 60 ignore-reload
reload-into-ims

but reload-into-ims will not have any effect. You could argue that
this is obvious, but I think it should be caught at parse time.

2. As an aside - but I want to mention it here - we need to make it
clearer that if an object does specify an expiry time, the Min,
Percent and Max values in refresh_pattern will be completely ignored,
but the options won't be. I'll change cf.data.pre accordingly

3. override-expire

                override-expire enforces min age even if the server
                sent a Expires: header. Doing this VIOLATES the HTTP
                standard. Enabling this feature could make you liable
                for problems which it causes.

If you do want to modify the behaviour of blindly obeying the
server's explicit expiry time, you can - to an extent.

The override-expire option enforces the Min time in cache, even if
the origin stated it should expire before then.
But it ignores the Max time (surprising!), and the L-M factor (more
expected - not obvious what this would do anyway)

It's not very intuitive. I think we should probably make this option
enforce the Max time as well. Possibly even ignore the explicit
expiry of the object altogether and fall back to last-modified factor??

It could be a naming thing... override-expire doesn't really say what
it does. enforce-min might be better. But then you've already stated
a min and might expect it to be already enforced.

4. override-lastmod

                override-lastmod enforces min age even on objects
                that were modified recently.

The Min time isn't enforced even when the last-modified factor
algorithm does kick in. If the object was only just modified and the
L-M factor algorithm results in a figure lower than the Min, it will
be considered fresh for less than the configured Min.

This isn't what I would expect. I know that the override-lastmod
exists to let you do this, but it's really non-intuitive. I think the
Min should always be enforced if we're using L-M factor algorithm,
and that we should therefore lose the override-lastmod option. Can't
see the point in the default (null) behaviour of Min otherwise.

Thoughts?

Doug
Received on Thu Jun 01 2006 - 06:19:28 MDT

This archive was generated by hypermail pre-2.1.9 : Fri Jun 30 2006 - 12:00:02 MDT