我目前正在使用Retrofit和Okhttp,我正在尝试缓存一些GET响应。 我的代码是:
OkHttpClient okHttpClient = new OkHttpClient();
File cacheDir = new File(System.getProperty("java.io.tmpdir"),
"ddcache");
HttpResponseCache cache = new HttpResponseCache(cacheDir, 2024);
okHttpClient.setResponseCache(cache);
OkClient cl=new OkClient(okHttpClient);
restAdapter = new RestAdapter.Builder().setEndpoint(API_URL)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(cl).build();
日志显示此标题:
HTTP/1.1 200 OK
Cache-Control: max-age=7200
Connection: Keep-Alive
Content-Type: text/html
Date: Tue, 18 Mar 2014 18:38:16 GMT
Keep-Alive: timeout=3, max=100
OkHttp-Received-Millis: 1395167895452
OkHttp-Response-Source: NETWORK 200
OkHttp-Sent-Millis: 1395167895378
Server: Apache/2.2.26 (Unix)
Transfer-Encoding: chunked
X-Powered-By: PHP/5.3.28
我通过在每次调用时返回Server Unix Time来检查响应,它总是返回一个新的,这意味着
缓存控制:max-age = 7200
完全被忽略了 缓存中的日志文件也会使用“CLEAN”和“DIRTY”注释进行更新,但不会缓存任何内容。 有什么明显的东西我看不到吗?
答案 0 :(得分:0)
我想我遇到了类似的问题。缓存的大小以千字节为单位,您将其设置为仅2024千字节。这几乎没有足够的空间。尝试将其设置为" 10L * 1024 * 1024" (10Mb),看看是否有帮助。