Expiring the cached output when it reaches a certain age, or when unused for a certain period, always involves a trade-off... To have ultimate control over your cached data you may provide an ICacheSignal that will fire an event when the data changes.
Spark is a view engine for Asp.Net Mvc and Castle Project MonoRail frameworks. The idea is to allow the html to dominate the flow and the code to fit seamlessly.