ARC (adaptive replacement cache) is the best generic caching strategy I know of, but the patent status is problematic.
https://en.wikipedia.org/wiki/Adaptive_replacement_cache
In 2006, IBM was granted a patent for the adaptive replacement cache policy.
http://patft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=...IBM's patent will take quite a while to expire. It's truly a shame this can't be used by operating system page cache policy because of patents.