req.hash

STRING, can only be set (cannot be read or unset).

Available inhasherror

Hash value for the object. The hash determines what is unique about an object. Anything added to the hash will cause Varnish to cache objects separately based on that information.

For example, adding req.url to the hash causes each URL to be cached as a separate object as one would normally expect.

To ensure purge all functionality works for the service, req.vcl.generation must be added to req.hash as shown below:

set req.hash += req.vcl.generation;

Try it out

req.hash is used in the following solution recipes, which show real world use cases. Click RUN to provision a Fastly service, execute the code on Fastly, and see how the function behaves.

Support caching of OPTIONS requests

Normally OPTIONS requests aren't cacheable. Allow caching of OPTIONS by converting the request to a GET and back to OPTIONS if it's a cache miss.

Cache '429' rate-limiter responses per IP

If a backend returns a 429, cache it for the requesting IP but continue to allow other clients to use origin.

User contributed notes

We welcome comments that add use cases, ideas, tips, and caveats. All comments will be moderated before publication. To post support questions, visit our support center and we'll find you the help you need.