(Android) OkHttpClient基于URL的缓存(不同url不同缓存)

(Android) OkHttpClient caching based on URLs (different caching for different urls)

对于 Android 应用程序,是否可以使用 OkHttpClient 为不同的 url 设置不同的缓存时间?

比如我有两个url:

  1. http://www.example.com/getcountries.php

  2. http://www.example.com/getnews.php

对于第一个 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/