Skip to content

Instantly share code, notes, and snippets.

@dan
Forked from perbu/grave-v4.vcl
Created March 9, 2016 20:58
Show Gist options
  • Save dan/3d9a9f2d2b7666c64f79 to your computer and use it in GitHub Desktop.
Save dan/3d9a9f2d2b7666c64f79 to your computer and use it in GitHub Desktop.
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