Publ: Development Blog

v0.3.3 - now with ETag and Last-Modified

Posted (2 months ago)

I’ve started working on Pushl in earnest now, and one thing that was really bugging me about this is that anything which polls feeds and entries would really benefit from having client-side cache control working. Which was a big missing feature in Publ.

Well, I finally implemented it, and I’m pretty happy with how I did it.

The short version: for any given view it figures out (pessimistically) what’s the most recent file that would have affected the view (well, within reason; it only looks at the current template rather than any included templates, which is pretty difficult to do correctly) and uses that to generate an ETag (via metadata fingerprint) and a Last-Modified time (based either on the file modification time or the time the entry was actually published).

There’s probably a few corner cases this misses but in general this makes client-side caching of feeds and such work nicely.