-
-
Save dan/3d9a9f2d2b7666c64f79 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sub vcl_hit { | |
if (obj.ttl >= 0s) { | |
# normal hit | |
return (deliver); | |
} | |
# We have no fresh fish. Lets look at the stale ones. | |
if (std.healthy(req.backend_hint)) { | |
# Backend is healthy. Limit age to 10s. | |
if (obj.ttl + 10s > 0s) { | |
set req.http.grace = "normal(limited)"; | |
return (deliver); | |
} else { | |
# No candidate for grace. Fetch a fresh object. | |
return(fetch); | |
} | |
} else { | |
# backend is sick - use full grace | |
if (obj.ttl + obj.grace > 0s) { | |
set req.http.grace = "full"; | |
return (deliver); | |
} else { | |
# no graced object. | |
return (fetch); | |
} | |
} | |
} | |
sub vcl_backend_response { | |
set beresp.ttl = 10s; | |
set beresp.grace = 1h; | |
} | |
sub vcl_recv { | |
# intial state | |
set req.http.grace = "none"; | |
} | |
sub vcl_deliver { | |
# copy to resp so we can tell from the outside. | |
set resp.http.grace = req.http.grace; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment