Helper class to configure cache behaviour of OkHttp client and Retrofit
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gradle/wrapper
okcache-control
.gitignore
.travis.yml update code coverage with travis Jun 24, 2016
LICENSE.txt
README.md
build.gradle Update project configuration Jun 22, 2016
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

OkCacheControl

Build Status Codacy Badge codecov Download

Helper class to configure cache behaviour of OkHttp client, also works with Retrofit for Android.

Release version is available on jcenter:

repositories {
    jcenter()
}
dependencies {
    compile 'com.ncornette.cache:okcache-control:1.1.1'
}

Usage

Initialize OkCacheControl with OkHttpClient.Builder(), then you can call 2 extra methods :

  • overrideServerCachePolicy(MaxAgeControl)
  • forceCacheWhenOffline(NetworkMonitor)
  okClient = OkCacheControl.on(new OkHttpClient.Builder())
          .overrideServerCachePolicy(30, MINUTES)
          .forceCacheWhenOffline(networkMonitor)
          .apply() // return to the OkHttpClient.Builder instance
          .cache(cache)
          .build();

Description

  • overrideServerCachePolicy(MaxAgeControl) will override server cache policy on responses with Cache-Control: max-age. Cache will be used until expiration even if network is available. Use it when server doesn't implement a cache policy!

  • forceCacheWhenOffline(NetworkMonitor) will force the use of cache when no network connection is available. When offline, cache will be used even if expired. for Android you can implement a NetworkMonitor that returns the value of ConnectivityManager.getActiveNetworkInfo().isConnected().

Call apply() to add interceptors to OkHttpClient.Builder and return the builder so you can continue to build OkHttpClient and add the cache.

Per request cache control

without Cache-Control header, cache is used until expiration, then network. (with forceCacheWhenOffline() expired cache will be used when offline)

  • add Cache-Control: no-cache to always use network, cache will be used only when offline.

  • add Cache-Control: no-store to not store response in cache.

License

Copyright 2016 Nicolas Cornette

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.