我可以阻止HTTPResponseCache在Cache-Control标头方面表现得像共享缓存吗?

Ste*_*and 6 android caching http cache-control httpresponsecache

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

我可以让它缓存在响应的唯一方法都是明确提出"公开"在Cache-Control服务器上的响应头(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);
}
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*and 0

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