我可以停止HTTPResponseCache行为就像一个共享缓存关于缓存控制头



我试图在我的应用程序中使用内置的HTTPResponseCache(通过HTTPURLConnection API发出请求),但我有问题,试图让它缓存包含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);
}

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

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

相关内容

  • 没有找到相关文章

最新更新