sub vcl_recv { unset req.http.X-Cache; } sub vcl_hit { set req.http.X-Cache = "HIT"; } sub vcl_miss { set req.http.X-Cache = "MISS"; } sub vcl_pass { set req.http.X-Cache = "PASS"; } sub vcl_pipe { set req.http.X-Cache = "PIPE uncacheable"; } sub vcl_synth { set resp.http.X-Cache = "SYNTH"; } sub vcl_deliver { if (obj.uncacheable) { set req.http.X-Cache = req.http.X-Cache + " uncacheable" ; } else { set req.http.X-Cache = req.http.X-Cache + " cached" + " (real age: " + resp.http.Age + ", hits: " + obj.hits + ", ttl: " + resp.http.x-ttl + ")"; } # if we are gracing, make sure the browser doesn't cache things, and set our maxage to 1 # also log grace delivery if (req.http.graceineffect) { set resp.http.Cache-Control = regsub(resp.http.Cache-Control, "max-age=[0-9]*", "max-age=1"); set resp.http.Cache-Control = regsub(resp.http.Cache-Control, "channel-maxage=[0-9]*", "channel-maxage=1"); set req.http.X-Cache = req.http.X-Cache + " [grace: " + req.http.graceineffect + " " + req.http.grace + ", remaining: " + req.http.graceduration + "]"; } # uncomment the following line to show the information in the response set resp.http.X-Cache = req.http.X-Cache; }