6

我正在尝试使用HTTPResponseCache我的应用程序中的内置功能(通过HTTPURLConnectionAPI 发出请求),但在尝试让它缓存Authorization包含标头的任何响应时遇到问题。

我可以让它缓存响应的唯一方法Cache-Control在服务器上的响应标头中显式放置“public” (s-maxage可能也可以,没有尝试过,但显式将private结果放在不缓存中);但这意味着任何中间代理都会缓存响应以提供给其他客户端,这不是我想要的。

我的理解是,用户代理缓存会缓存Authorization默认情况下使用标头或标头请求的响应private。看起来HTTPResponseCache它在解释标头的方式上就像一个共享缓存,而不是用户代理缓存。还是我对缓存标准的理解不正确?

有什么办法可以让缓存像用户代理 HTTP 缓存一样工作?

这在我的安装代码中:

public static void setupCache(Context context, long httpCacheSize){
  File httpCacheDir = new File(context.getCacheDir(),"http");
  HttpResponseCache.install(httpCacheDir, httpCacheSize);
}

我需要在这里做一些不同的事情吗?或者我可能需要在我的请求中包含一些用户代理信息?

4

1 回答 1

0

虽然我没有找到解决这个特定问题的方法,但我通过重构我的 HTTP 客户端代码以使用 Volley ( http://developer.android.com/training/volley/index.html ) 而不是 HTTPURLConnection 来解决我的问题。Volley 中的缓存设施与 HTTPResponseCache 分开实现,并按照用户代理缓存的预期实现缓存控制标头的处理。

于 2015-12-16T14:29:54.200 回答