[uf-rest] A Microformat for cache invalidation?

Mark Nottingham mnot at yahoo-inc.com
Tue Mar 21 13:07:19 PST 2006


One of the useful features of HTTP is the ability of a non-GET method  
(i.e., one with side effects) to target a resource to be invalidated  
by caches with a URI. See:
   http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.10
   http://www.mnot.net/blog/2006/02/18/invalidation

This is nice and useful, but more complex RESTful applications will  
find it lacking; often, a change in the state of one resource will  
affect many others, not just one. I've had thoughts of coming up with  
HTTP extensions (or a specific entity format) to enable this on the  
back burner for a while, when I realised (duh) that a Microformat  
would do the trick nicely.

E.g.,

<html>
<head><title>Delete Successful</title></head>
<body profile="http://example.org/not/spec'd/yet">
<h1>It was deleted.</h1>
<p>This affects the state of the following resources:</p>
<ul>
<li><a class="invalidation" href="http://www.example.com/things/ 
this">This</li>
<li><a class="invalidation" href="things/that">That</li>
<li><a class="invalidation" href="http://www.example.org/stuff/the  
other">The Other</li>
</ul>
</body>
</html>

With the same security considerations as in section 13.10 (although I  
could see it being modified; see separate cover).

The semantics would be that clients understanding this extension  
could also invalidate cached entries marked up with the microformat.  
They couldn't be required to do so, of course, because you can't  
guarantee that they'll be understood (except in controlled  
environments), but it seems like it would be helpful in some  
scenarios. Especially if other extensions (e.g., one for offline Web  
caching; see http://www.mnot.net/blog/2006/02/07/offline) could  
leverage it.

The syntax could be a class on 'a' tags, or a link tag, or both.

Thoughts?

--
Mark Nottingham
mnot at yahoo-inc.com





More information about the microformats-rest mailing list