温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - (Android) OkHttpClient caching based on URLs (different caching for different urls)
android cache-control caching okhttp

其他 - (Android)基于URL的OkHttpClient缓存(不同的URL的不同缓存)

发布于 2020-08-24 09:32:50

对于Android Apps,是否可以使用OkHttpClient为不同的URL设置不同的缓存时间?

例如,我有两个网址:

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

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

对于第一个网址,我想设置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();

能行吗 (有了适当的缓存,调试就很困难)。

谢谢你的支持。

查看更多

提问者
mooglife
被浏览
44
Jesse Wilson 2020-05-07 19:02

这将起作用,但我认为您需要最大寿命而不是最大失效时间。在时间a写入的缓存响应将一直提供到时间b为止,时间b是从响应的标头中得出的时间。您在max-stale中指定的值将添加到b中,以延长缓存的响应的寿命。您在max-age中指定的值会添加到中以限制缓存的响应有效的时间。

https://square.github.io/okhttp/4.x/okhttp/okhttp3/-cache-control/-builder/