Shain, I can't say for certain without looking at it myself, but I wonder if when you request the URL from the second machine using firefox you are actually doing a "refresh" that's setting a Cache-Control header that's forcing varnish to consult the origin server. I suggest connecting to your varnish with "varnishlog" and watching the headers that each client sends varnish. If you see headers like this:
13 RxHeader c Pragma: no-cache 13 RxHeader c Cache-Control: no-cache Then you know that's what's happening. In general, it sounds like you are looking for an "off-line" mode where the cache server simply serves stale content if an origin server can not be reached. If that feature is present in varnish, I'm not aware of it. Adrian On Mar 7, 2008, at 1:10 PM, Shain Miley wrote: > Hello all, > First let me say thanks to everyone for taking time to work on this > project...I am still in the testing phase, however if all goes well > Varnish is going to come in quite handy. > > So here is my problem: > > I would like to use varnish to cache urls for say a period of 30 > minutes. The caching seems fine as long as I use the same browser to > request the url. But I am looking for a stop gap solution at this > time > so in the event that the web server becomes unavailable....varnish can > serve the docs for a little while, so we can get things back in order. > Anyway..as it stands right now..I can request a url from wget or > GET or > firefox... and turn off the webserver and I can refresh the page > and all > is well. > > What I cannot do...is request a url using GET on one machine..then > stop > the webserver and request that same url from firefox (different > machine) > and get a valid page...I get a 503 error...Here is the vcl.conf file > (which I took most of from the web) I am using: > > Any help would be great! > > Thanks, > > Shain > > sub vcl_recv { > if (req.request != "GET" && req.request != "HEAD") { > # PURGE request if zope asks nicely > if (req.request == "PURGE") { > if (!client.ip ~ purge) { > error 405 "Not allowed."; > } > lookup; > } > pipe; > } > if (req.http.Expect) { > pipe; > } > > if (req.http.Authenticate || req.http.Authorization) { > pass; > } > > # We only care about the "__ac.*" cookies, used for > authentication > if (req.http.Cookie && req.http.Cookie ~ > "__ac(|_(name|password|persistent))=") { > pass; > } > > # File type that we will always cache > if (req.request == "GET" && req.url ~ > "\.(html|php|gif|jpg|swf|css|js|png|jpg|jpeg|gif|png|tiff|tif|svg| > swf|ico|css|js|vsd|doc|ppt|pps|xls|pdf|mp3|mp4|m4a|ogg|mov|avi|wmv| > sxw|zip|gz|bz2|tgz|tar)$") > { > lookup; > } > > if (req.request == "POST") { > pipe; > } > > # force lookup even when cookies are present > if (req.request == "GET" && req.http.cookie) { > lookup; > } > lookup; > } > > sub vcl_fetch { > > if (obj.ttl < 1800) { > set obj.ttl = 1800s; > } > } > > # Do the PURGE thing > sub vcl_hit { > if (req.request == "PURGE") { > set obj.ttl = 0s; > error 200 "Purged"; > } > } > > sub vcl_miss { > if (req.request == "PURGE") { > error 404 "Not in cache"; > } > } > > > > _______________________________________________ > varnish-dev mailing list > varnish-dev@projects.linpro.no > http://projects.linpro.no/mailman/listinfo/varnish-dev _______________________________________________ varnish-dev mailing list varnish-dev@projects.linpro.no http://projects.linpro.no/mailman/listinfo/varnish-dev