HTTP caching is a mess. I wonder why no one proposed a properly redesigned and negotiable protocol that covers all the edge cases. (And maybe supports partial caching/partial re-validation of pages.)
On my phone, so unfortunately no reference, but there is a HTTP 2 spec underway that allows a client to send a cache manifest frame. A server can then push the resources that are newer. Pretty much exactly what's needed.
Unless we're talking about different things, cache manifest is an HTML 5 feature designed to enable websites to work offline. That's quite different from HTTP-level caching, which would be applicable to any files/resources and designed primarily with performance and bandwidth savings in mind. I might be unaware of some relevant HTTP 2 features, though.