vcl_hit
The built-in vcl_hit
subroutine is executed when an object has been found in the cache and is available to be delivered to the client.
A hit in cache usually, but not always, means that the object is fresh; that is, it is within the TTL set by the origin or within the vcl_fetch
subroutine. In cases where the object is stale, but is configured with a positive beresp.stale_while_revalidate
time that has yet to expire, this will still be considered a hit and will trigger a background fetch to repopulate the cache asynchronously. A stale object may also trigger a hit if the backend is considered sick; that is, it has a health check configured, the health check is consistently failing, and the object is configured with a beresp.stale_if_error
time which has not expired.
The hit
subroutine should return(deliver)
to deliver the object. It is also possible to return(pass)
, ignoring the hit and instructing Fastly to fetch from the backend anyway. The exception statements restart
and error
may both be used in vcl_hit
.
Typically hit
is executed on a fetch node as a result of clustering.
State transitions
To see this subroutine in the context of the full VCL flow, see using VCL.
Tokens available in this subroutine
The following limited-scope VCL functions and variables are available for use in this subroutine (those in bold are available only in this subroutine, those available in *all* subroutines are not listed):