Cross-verb cache invalidation (POST/PUT invalidates GET)

Jonathan Matthews contact at
Fri May 13 21:11:18 CEST 2011

Hi all -

I'm mucking around this weekend designing a "My-First-JSON-API"
service to learn about the process of API design, and I'd obviously
like to make it as cache- and varnish-friendly as possible.

Using HTTP verbs "correctly" (something like the ideas expressed at
I'll be POSTing and PUTting incremental and complete objects into the
service and GETting their state - all to and from the same URI per

How can I (and *should* I?) instruct Varnish to obey the TTL that the
backed sets for content received by GETting a specific URI (say but to invalidate that content when
a PUT/POST to the same URI is observed?

I've not started poking at it through Varnish yet and, given the
definition of the HTTP verbs in the RFCs, I kind of hope it might Just
Work - that a POST/PUT to a URI will invalidate (and possibly
overwrite with the response body?) the cached content from the last
GET request to that URI.

If not - I throw the question open to the floor ... is this a job that
should be done in VCL? How? Will I just find it done already?

Thanks in advance for any advice!
Jonathan Matthews
London, UK

More information about the varnish-misc mailing list