I'm working on this now. I have two approaches:
1. (Implemented) - If you control the URLs, put the timestamp of the resource in the URL linking to it. eg url_for(:product => product, :timestamp => product.modified_at.to_i)
2. Instead of using page caching, have Apache cache, use mod_cache. Then, set the expires header very short - Apache will ask Rails for the resource. But don't return it if it's still okay - see http://www.igvita.com/blog/2007/03/07/client-http-caching-in-rails/
(I have the headers in #2 working but have not turned on mod_cache yet) Let me know how your experience goes.