Don’t get me started with the World Wide Web… This module was developed to deal with a simple problem when it comes to HTTP caching with Varnish or in general: the server should be in charge of the cache policy but the client has many ways to circumvent them.

For starters the HTTP spec gives the user some degree of control, like demanding to not be served from cache. Of course any sane server should ignore such frivolous demands, unless there is a valid case like “oh yeah sure, that’s our authenticated script in charge of refreshing certain resources”.

So after a year of recovery from an architecture slap from Git, I found myself turning the other cheek towards Varnish. I started this module to learn the Varnish internals, and eventually published it. This project was my first “several things”: first open source project, first project running on production sites totally unrelated to me or my day job, first patch received.

And what a first patch! A pull request to fix a bug leading to a crash. My first open source project crashed someone else’s production! Good thing those guys could find the problem and fix it. Embarrassing, but worth a couple lessons.

It is now much more reliable and since the redesign of the API it is (in my opinion) performing better and easier to use.

I haven’t seen a bug report on the module since the 1.0 release, and eventually I discovered from one of the users that the old API is available to Fastly users.

For a tiny project, I’d say it’s not that bad. I still maintain it but new features have become rare and there shouldn’t be room for bugs in such a small code base with a good test coverage.

Source code: https://github.com/Dridi/libvmod-querystring