You might want to check the list of "Ruby HTTP clients features" (archived version from January 2015) for a complete overview.
Take a look at Faraday-HTTP-Cache.
rufus-jig supports conditional GET.