Just looking at the source you call might not be enough: sometimes you have to follow the thread further. The faraday-http-cache middleware looked like it'd work out of the box, so long as my service supplied an ETag.
Today I discovered that it was hashing the entire set of request headers to determine the cache key, not just those that might Vary.