GeekNews
GeekNews copied to clipboard
缓存问题
首先致敬神作! 现在的缓存应该是有问题的,掘金的服务器是禁止缓存的,无法达到缓存目的。问题在HttpModule:
@Singleton
@Provides
OkHttpClient provideClient(OkHttpClient.Builder builder) {
.....
Interceptor cacheInterceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (!SystemUtil.isNetworkConnected()) {
request = request.newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.build();
}
Response response = chain.proceed(request);
if (SystemUtil.isNetworkConnected()) {
int maxAge = 0;
response.newBuilder()
.header("Cache-Control", "public, max-age=" + maxAge)
.removeHeader("Pragma")
.build();
} else {
int maxStale = 60 * 60 * 24 * 28;
response.newBuilder()
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
.removeHeader("Pragma")
.build();
}
return response;//直接返回了之前的response是达不到缓存目的的
}
};
.....
}
应该改为
response = response.newBuilder()
.removeHeader("Pragma")
.removeHeader("Cache-Control")
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
//.removeHeader("Pragma")
.build();
在自己的项目中上面的两种都没有实现离线缓存,请问除了拦截器还需要配置哪里吗?
post无法缓存
| | 尹宝华 邮箱:[email protected] |
签名由 网易邮箱大师 定制
在2018年10月18日 14:46,1391884664 写道:
在自己的项目中上面的两种都没有实现离线缓存,请问除了拦截器还需要配置哪里吗?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.