closed #20: Cache recipe ingredients