我试图在我的应用程序中使用内置的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和实现缓存控制头的处理,如预期的用户代理缓存