I've written a plugin to allow for time based fragment caching. It lets you do things like:
<% cache 'fragment_name', 10.minutes.from_now do %>
<p>something intensive which will be cached for 10 minutes</p>
<% end %>
Also, there's a convenience method so that in your controllers you can do:
when_fragment_expired 'fragment_name', 10.minutes_from_now do
@stuff = do_something_intensive
This will check the fragment cache, see if it's expired and if so it will execute the code in the block. It deals with expiring the fragment itself, so if using this you don't need to have the expiry time in your views and you can keep yourself DRY by having the expiry time in just one place.
Hopefully it's of use to someone.
SVN repo is here: