Android OkHttp:为什么我得到相同的回复

时间:2015-04-10 02:56:49

标签: android okhttp

当我使用OkHttp从这样的URL中获取JSON:

Request request = new Request.Builder()
            .url(url).build();

我通常会得到相同的回复(有时候我会得到新回复)。

如果我这样使用:

Request request = new Request.Builder()
            .cacheControl(new CacheControl.Builder().noCache().noStore().build())
            .url(url).build();

我每次都会收到新的回复。

我想知道为什么我会通过第一种方法获得相同的响应?

1 个答案:

答案 0 :(得分:1)

在HTTP中缓存

HTTP通常用于分布式信息系统,通过使用响应缓存可以提高性能。 HTTP / 1.1协议包括许多旨在尽可能使缓存工作的元素。因为这些元素与协议的其他方面不可分割,并且因为它们彼此交互,所以与方法,标题,响应代码等的详细描述分开描述HTTP的基本缓存设计是有用的。

如果没有显着提高性能,缓存将毫无用处。在HTTP / 1.1中缓存的目的是在许多情况下消除发送请求的需要,并且在许多其他情况下无需发送完整响应。前者减少了许多操作所需的网络往返次数;我们使用"到期"为此目的的机制。后者降低了网络带宽要求。

有关详细信息,请浏览Caching in HTTP。另外,有关编码方面的帮助,请参阅Class Cache上的此文档。