我想在我的应用程序中缓存 API 请求,以便用户即使离线也可以看到一些内容。
我还有一个带有多个标头的
HeaderInterceptor
,例如language
,如en
、es
、fr
等...同一端点根据标头language
返回不同的结果。
从我在 OkHttp 源代码中读到的内容来看,缓存只关心 url,因此即使我的用户更改语言并且使用不同的标头发出新请求,他也会获得缓存响应,而不是创建新的响应打电话。
如何创建一个也考虑标头的自定义缓存?
您的服务器应该设置 Vary 标头
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary
如果您在应用程序拦截器中应用标头,OkHttp 应该尊重 Vary 标头