(Android) OkHttpClient基于URL的缓存(不同url不同缓存)
(Android) OkHttpClient caching based on URLs (different caching for different urls)
对于 Android 应用程序,是否可以使用 OkHttpClient 为不同的 url 设置不同的缓存时间?
比如我有两个url:
对于第一个 url,我想将缓存设置为 365 天:
Request request = new Request.Builder()
.cacheControl(new CacheControl.Builder()
.maxStale(365, TimeUnit.DAYS)
.build())
.url("http://www.example.com/getcountries.php")
.build();
第二个url,我想设置缓存3分钟:
Request request = new Request.Builder()
.cacheControl(new CacheControl.Builder()
.maxStale(3, TimeUnit.MINUTES)
.build())
.url("http://www.example.com/getnews.php")
.build();
有用吗? (有了缓存,调试很困难)。
感谢您的支持。
这可行,但我认为您需要 max-age 而不是 max-stale。在时间 a 写入的缓存响应将一直提供到时间 b,该时间源自响应的 headers。您在 max-stale 中指定的值将添加到 b 以延长缓存响应的生命周期。您在 max-age 中指定的值被添加到 a 以限制缓存响应的有效时间。
https://square.github.io/okhttp/4.x/okhttp/okhttp3/-cache-control/-builder/
对于 Android 应用程序,是否可以使用 OkHttpClient 为不同的 url 设置不同的缓存时间?
比如我有两个url:
对于第一个 url,我想将缓存设置为 365 天:
Request request = new Request.Builder()
.cacheControl(new CacheControl.Builder()
.maxStale(365, TimeUnit.DAYS)
.build())
.url("http://www.example.com/getcountries.php")
.build();
第二个url,我想设置缓存3分钟:
Request request = new Request.Builder()
.cacheControl(new CacheControl.Builder()
.maxStale(3, TimeUnit.MINUTES)
.build())
.url("http://www.example.com/getnews.php")
.build();
有用吗? (有了缓存,调试很困难)。
感谢您的支持。
这可行,但我认为您需要 max-age 而不是 max-stale。在时间 a 写入的缓存响应将一直提供到时间 b,该时间源自响应的 headers。您在 max-stale 中指定的值将添加到 b 以延长缓存响应的生命周期。您在 max-age 中指定的值被添加到 a 以限制缓存响应的有效时间。
https://square.github.io/okhttp/4.x/okhttp/okhttp3/-cache-control/-builder/