Android Nginx Retrofit+Okhttp.HTTP 504 Unsatisfiable Request (only-if-cached)

504 Unsatisfiable Request (only-if-cached)

在使用 okhttp 过程中,有可能会报题错误。其实这个问题很复杂,涉及到很多情况,比如 缓存、Nginx 、okhttp配置。当初碰到此问题时,花费很多时间和精力,太奇怪了。后面直接采用粗暴的做法解决(后面会说)。

出现这种情况一般来说是我们前端配置了缓存,但是后台服务端却没有合理处理缓存请求头。

解法一 Cache-Control

看看 OkHttpClient 的配置,是否配置了缓存。不直接分析 OkHttpClient  的缓存机制,简单说做法,先全局搜索Cache-Control ,看看有没有在头部配置缓存,如果搜到了,找到对应头部,去掉它。
如果没搜索到,再搜索CacheControl.FORCE_CACHE ,看看有没有设置请求缓存,如果有也去掉。也就是说不加缓存,无网不能获取数据,有网都用接口中的数据。

解法二 域名改成IP

因为后台使用Nginx并没有处理我们请求头中的缓存,所以不用域名做地址,用域名映射的IP,这样就不会通过Nginx,直接通过IP+Port请求接口。

怎么说呢?不管有用没,还是想加上这句
老郭种树原创,转载请加上Android Nginx Retrofit+Okhttp.HTTP 504 Unsatisfiable Request (only-if-cached)
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注