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

Reply via email to