Cache uris and etags so we can validate if none match without the store
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This is a plugin for TiddlyWeb that creates a cache of ETags.

It uses the memcached handling provided by tiddlywebplugins.caching.

Cache invalidation is handled via store hooks and this trick:

Note the test files are not good tests, there were used to structure
development but do not adequately assert anything.

The plugins keeps a cache of ETags so we don't need to access the store
to do validation.
This operates as a two tiered piece of middleware.

On the request side it checks if the request is a GET and if it includes
an If-None-Match header. If it does it looks up the current URI in the
cache and compares the value with what's in the If-Match header. If they
are the same we can raise a 304 right now.

On the response side, if the current request is a GET and the outgoing
response has an ETag, put the current URI and ETag into the cache.

Store HOOKs are used to invalidate the cache through the management of

Installation is simply adding the plugin name to system_plugins and
twanager_plugins in

Licensed as TiddlyWeb itself.
Copyright 2011, Chris Dent <>