Not filesystems, but device-level tools that can work with any filesystem:
LVM cache. I tried it a few months ago and it seemed to properly wait until something was read multiple times before putting it in the cache. It didn't seem to cache writes (which was good for my use).
bcache, but it didn't seem to allow disabling write caching. So every useless log file of web browser write would go through the SSD, even if it's never read again.
I finally just gave up and split filesystems. Boot entirely on SSD, home on HDD. With a few exceptions from /var being put on HDD using mountpoints in fstab.
(post is archived)