Launch Apollo Studio

HTTP cache

This page focuses on the HTTP cache. If you want to deduplicate the storage of your objects and/or notify your UI when your data changes, take a look at the normalized cache instead.

ℹ️ The HTTP cache is only available on the JVM.

To enable HTTP cache support, add the dependency to your project's build.gradle file:

dependencies {

Then configure your HTTP cache:

apolloClient = ApolloClient.Builder()
      // Use a dedicated directory for the cache
      directory = File(pathToCacheDirectory),
      // Configure a max size of 100MB
      maxSize = 100 * 1024 * 1024

The HTTP cache is a least recently used (LRU) cache with a configurable max size.

Once your cache setup is complete, the cache will be used by default by all your queries. By default, queries will try to find a result in the cache first and go the network if it's not there. This is the HttpFetchPolicy.CacheFirst. You can customize that behaviour with httpFetchPolicy(HttpFetchPolicy):

val response = apolloClient.query(query)
                 // Don't use the cache

                 // Or only use the cache

                 // Finally, execute your query

If the query is present in cache, it will be used to return If not, a HttpCacheMissException will be thrown.

Edit on GitHub