Wait a minute, I only offered to reduce the grace depending on a header because I thought you only wanted to do that for some privilege clients.
>From what I understand now, you want to make sure that after a softpurge, you never get the stale object. So, if I may: why use a softpurge at all? Just remove the objects completely and be done with it. -- Guillaume Quintard On Thu, Sep 3, 2020 at 9:55 AM Batanun B <[email protected]> wrote: > Hi, > > I'm not sure how that "no-grace" header would be set. The softpurge could > theoretically impact hundred of URLs, and what we would like is that any > requests for these URLs after the softpurge should include a special header > when talking with the backend. > > Skipping grace in general, and sending that special header to all requests > to the backend, is not what we want. > > But now I am thinking of an alternative, that might give us somewhat what > we want while being much simpler and not needing to know if a softpurge has > happened or not. Since we really only need to do this in a short time > period after a softpurge, and the softpurge sets ttl to zero, then we can > skip the "after a softpurge" requirement and simply check if the ttl > recently expired. As far as I understand it, when the ttl has expired, the > obj.ttl is a negative value indicating how many seconds since the ttl > expired. So 15 seconds after the ttl, it would be -15s. Then we can have > something like this in in vcl_hit: > > ``` > if (obj.ttl > -15s) { > set req.http.X-my-backend-skip-cache = "true"; > return (miss); > } > ``` > > I can't check this right now, from the computer I am at. But it should > work, right? Then the only "false positives" we will end up with are the > requests that happen to come in within 15 seconds of the regular ttl > expiring. But if we get the cache invalidation to work fully (including in > the backend), then we should be able to increase the regular ttl higher > than the current 5s, and then this false positive should happen much more > rarely. > > > Guillaume Quintard <[email protected]> wrote: > > > > Hi, > > > > You can't detect a softpurge, but you can tell Varnish to ignore grace: > > > > ``` > > sub vcl_recv { > > if (req.http.no-grace) { > > set req.grace = 0s; > > } > > } > > ``` > > > > the softpurge kill the ttl at the object level, and this kills the grace > at the request level, so Varnish will reach out to the backend. > > > > But note that it will also do the same even without a prior softpurge, > it just needs an expired ttl. > > > _______________________________________________ > varnish-misc mailing list > [email protected] > https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc >
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
