首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android HttpResponseCache不工作

Android HttpResponseCache不工作
EN

Stack Overflow用户
提问于 2014-03-18 17:27:24
回答 1查看 1.4K关注 0票数 2

我试图利用HttpResponseCache,但没有运气使它工作。

我是这样安装的:

代码语言:javascript
复制
        SdCardManager manager = SdCardManager.getSdCardManager(context);
        File dir = new File(manager.getAbsolutePathForSdCardFile(""), "http");
        Log.e("Test", "Installing cache to " + dir.getAbsolutePath());
        HttpResponseCache.install(dir, 10 * 1024 * 1024);

我的连接代码是:

代码语言:javascript
复制
    try{
        URL url = new URL(mUrl);

        HttpURLConnection connection = (HttpURLConnection) ((mProxy == null) ? url
                .openConnection() : url.openConnection(mProxy.getProxy()));

        HttpResponseCache cache = HttpResponseCache.getInstalled();
        Log.e("Test", "Req count: " + cache.getRequestCount() + " hit count " + cache.getHitCount() + "   size = " + cache.size());

        connection.setUseCaches(true);
        connection.setDefaultUseCaches(true);
        connection.addRequestProperty("Cache-Control", "max-stale=" + (60 * 60 * 24 * 28));

        applyHeaders(connection);
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(mTimeout);
        connection.setReadTimeout(mTimeout);

        connection.connect();

        mStatusCode = connection.getResponseCode();
        mStatusMessage = connection.getResponseMessage();

        connection.disconnect();
    }
    catch (IOException ex) {
        ex.printStackTrace();
        return false;
    }

在亚行shell中,我看到正在创建缓存目录,并且它有一个日志文件。但是,再也没有数据发送到目录:

代码语言:javascript
复制
shell@maguro:/storage/emulated/legacy/Android/data/com.snip.pre/files/http $ ls
journal

每次请求之后,我刷新缓存:

代码语言:javascript
复制
HttpResponseCache cache = HttpResponseCache.getInstalled();
cache.flush();

你知道我做错了什么吗?服务器响应头在这里:

代码语言:javascript
复制
GET /imgv.oms/0.0.1fd02.a7003c2a HTTP/1.1
Cache-Control: max-stale=2419200
Authorization: Basic bWFydGlubDppc2lz
X-Loginpageredirect: none
Accept: image/*
Accept-Encoding: gzip,deflate
Accept-Language: en-GB
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.3; Galaxy Nexus Build/JWR66Y)
Host: appsdev2.server.com:81
Connection: Keep-Alive
Cookie: POSESSIONID=F8654323-f7frSyNmAGKsvE4nFXZJQIIy3Io

有什么能阻止它被缓存的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-19 10:43:09

问题是,我发送的是授权头,标准中有关于这些请求是否可缓存的特定规则。看见

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html第14.8条

服务器不允许我缓存结果,正如njzk2所暗示的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22486665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档