在使用 okhttp 过程中,有可能会报题错误。其实这个问题很复杂,涉及到很多情况,比如 缓存、Nginx 、okhttp配置。当初碰到此问题时,花费很多时间和精力,太奇怪了。后面直接采用粗暴的做法解决(后面会说)。
出现这种情况一般来说是我们前端配置了缓存,但是后台服务端却没有合理处理缓存请求头。
Cache-Control
看看 OkHttpClient 的配置,是否配置了缓存。不直接分析 OkHttpClient 的缓存机制,简单说做法,先全局搜索Cache-Control
,看看有没有在头部配置缓存,如果搜到了,找到对应头部,去掉它。
如果没搜索到,再搜索CacheControl.FORCE_CACHE
,看看有没有设置请求缓存,如果有也去掉。也就是说不加缓存,无网不能获取数据,有网都用接口中的数据。
因为后台使用Nginx并没有处理我们请求头中的缓存,所以不用域名做地址,用域名映射的IP,这样就不会通过Nginx,直接通过IP+Port请求接口。
查看更多