Retrofit+okhttp+rxjava, 缓存策略使用

主要涉及几个要点:

  1.  要使用离线缓存的页面网络请求方式必须要用GET(POST不可以),其他不要的页面还是用POST
  2. 在添加拦截器时,需要添加网络拦截器
    .addNetworkInterceptor(new NetInterceptor()) //有网情况下,一分钟内每次请求都会重新请求,不会走缓存
    )和应用拦截器
    .addInterceptor(new NoNetInterceptor())   //无网络的情况下:使用缓存,并且缓存的有效期为1天
    )。如果addNetworkInterceptor和addInterceptor添加的是同一个拦截器(包含了有网、无网络的逻辑处理),与把他们分开处理是不同的;使用同一个拦截器时,每次都会拦截两次,性能降低。
  3. 不同的页面对应着不同URL,并且这个URL必须是固定的,因为获取缓存的时候都是根据这个唯一的URL区分的,否则会找不到相应的缓存数据。

俗语解释:

  •      有网的情况下,我们依然可以设置:第一次请求数据成功,缓存成功后,在之后的1分钟内,再次请求会直接从缓存获取数据而不是重新网络请求;1分钟之后,不管有无缓存,都会重新网络请求数据。 
    max-age=60(1分钟)
  •   无网的情况下,可以使用强制从缓存获取数据
    CacheControl.FORCE_CACHE
  • 无网络、有缓存的情况下,怎么控制不在使用缓存数据了呢??可以使用
    max-stale=60*60(1小时),1小时之后缓存就失效了

猜你喜欢

转载自blog.csdn.net/fuweng886/article/details/81302571