我有几个请求根据标头值返回不同的结果。我为它们实现了缓存机制,并且它对于不同的 url 工作得很好,但是 okhttp 可能只接受 url(没有 headers 值),所以对于不同的 header 值我得到了相同的结果。
有没有办法强制 OkHttp 也考虑标头?它可以只是标头的一个值。
示例:
1. "https/domain/items" Header - ShopId=123
2. "https/domain/items" Header - ShopId=124
例如,我缓存响应 1 转到使用请求 2 缓存该数据的屏幕,然后返回屏幕 1 并尝试获取缓存的数据 - 我将获取请求 2 数据
不幸的是我无法改变 API 的工作方式。
我考虑重写 okhttp lib 中的 CacheStrategy 但老实说不知道如何去做,更重要的是在客户端中使用它
让服务器在 HTTP 响应上设置 Vary 标头。
HTTP/1.1 200 OK
Content-Length: 100
Vary: ShopId
...
如果服务器所有者拒绝,您可以在network拦截器中重写服务器的HTTP响应以代表其添加该标头。 (但是其他用户代理(例如网络浏览器)的缓存将会被破坏。)