Apollo, by default, does not assume what a given query might return. Anytime you invoke a query that wasn't invoked before, or it has been invoked, but not with the same variables, Apollo always asks the backend for the results. In some cases, however, we know that a given query can re-use a specific object or list of objects already in the cache.