Java 检查okhttp响应是否新鲜

Java 检查okhttp响应是否新鲜,java,okhttp,Java,Okhttp,检查响应是否为新响应(例如,不是来自缓存)的最佳方法是什么?这样做的理由是,我们只想在资产被修改的情况下进行一些昂贵的处理 目前我们有以下几点: if ((response.networkResponse() != null && response.networkResponse().code() == HTTP_NOT_MODIFIED) || response.cacheResponse() != null)

检查响应是否为新响应(例如,不是来自缓存)的最佳方法是什么?这样做的理由是,我们只想在资产被修改的情况下进行一些昂贵的处理

目前我们有以下几点:

if ((response.networkResponse() != null &&
                response.networkResponse().code() == HTTP_NOT_MODIFIED) ||
                response.cacheResponse() != null)

我想知道这是否是实现这一点的正确/最佳/简洁的方法。

如果存在缓存响应,则响应是从缓存提供的。无需检查网络响应。

您不能在响应头中添加时间戳以了解此响应的时间吗?不喜欢缓存,所以我可能会错过一些东西;)这是通过CDN提供的,所以我们不希望干扰标准HTTP实践。上面的代码是有效的(我相信),我只是不确定这是否是使用okhttp执行此操作的最佳方法。第一个请求是否为null?我不知道okhttp的内部结构,但由于我们启用了缓存,它的行为可能是“直写”,而cachedResponse总是!=空。
cacheResponse()
只有在使用缓存时才会为非空。@Roman我也有同样的问题,即
cacheResponse()!=所有响应均为空。我发现并解释了这背后的原因。如果要检查响应是否完全来自缓存,我将检查
cacheResponse()!=null&&networkResponse()==null