Hiyas,

I'm using a pool of (4) squid servers as a web accelerator for a slow backend 
(vignette, to be more exact). Right now, almost everything works like a charm, 
besides one thing.

I'm using a sibling hierarchy betwen those machines, and the cache mechanism 
works like that:

1 - the request arrives on any squid server;
2 - the server tries to find the object on its own cache (delivers to the 
client if found, goes to the next step if not);
3 - the server uses ICP to contact its siblings, and check if any of them got 
the content (retrieves from the sibling and delivers to the client if found, 
goes to the next step if not);
4 - if all the above fails, the request is directed to the (slow) backend 
server.

But, this backend server contain a "expire/purge" feature. I've written a 
gateway (using the "purge" tool, and converting it to a simple CGI). So, 
anytime my webmasters change an object on our CMS (which is also the backend 
server), an automatic "purge" is generated on all our squid servers.This 
request works as expected, but, usually takes some seconds (around 10 to 15 
seconds) to complete.

If, for any reason (high load, for example), a purge request (for object "foo") 
reaches servers 1, 2 and 3 (but haven't got the time to purge the object on 
server 4), and a new request for the object "foo" arrives on server 1 (which 
already expired this object), the request is redirected from server 1 to server 
4 (which contains an old version of the object). In a few words, I sometimes 
get a invalid cache, with old objects on my squid servers.

I tried to circunvent this situation using the keyword "refresh_stale_hit", but 
it didn't help anything (I configured it to 30 seconds, but it seems that squid 
does not consider a purged object "stale").

I would like to know if anyone got any solution for my problem (forcing an 
specific object to be retrieved from the origin, and not from the cache, if 
just expired).

I know I can use other kinds of hierarchies, but I was not able to find one 
which would guarantee some kind of high availability (with no SPOFs), and a 
small number of requests on my backend.

By the way, would htcp help me on this task? I know its "smarter" then ICP, but 
I haven't seen much documentation about any of them, to tell you the truth.

Thanks in advance,

Domingos.

--
Domingos Parra Novo
Terra Networks Brasil
[EMAIL PROTECTED]


Reply via email to