我正在创建一个Android应用程序,它从Web服务中获取所有数据。 我使用Okhttp作为网络层。我可以设置okhttp的缓存大小,但我想设置过时的时间,然后okhttp从服务器获取数据,否则从本地缓存中获取数据。
每当我按下并退出应用程序时。重新启动后,它再次从服务器获取数据。是否可以将本地缓存中的数据用于过时15分钟? 15分钟结束后,用户再次启动应用程序,然后数据来自服务器。
答案 0 :(得分:2)
您可以尝试在请求的回复中使用Cache-Control: max-age= 900
。这样您就可以告诉OkHttp
将响应缓存15分钟(900秒)。
您可以详细了解here。
如果您想在设备端以编程方式执行此操作,则可以使用拦截器重写响应。像这样使用它:
private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override public Response intercept(Interceptor.Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.header("Cache-Control", "max-age=900")
.build();
}
};
在构建它时将其添加到OkHttp
客户端:
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
.build();
你很高兴!