gpt4 book ai didi

android - 截击 : How to set up a Cache. 条目

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:48 25 4
gpt4 key购买 nike

我使用 Google 的 Volley 库作为我获取网络数据的设计;

我已经设置了一个请求队列

requestQueue = new RequestQueue(new DiskBasedCache(new File(context.getCacheDir(), 
DEFAULT_CACHE_DIR)), new BasicNetwork(new
HttpClientStack(AndroidHttpClient.newInstance(userAgent))));

我还对 Request 进行了子类化,并且可以很好地从网络返回数据。我的问题是缓存:在 parseNetworkResponse() 中,当我调用时,它在我的 Request 子类中被覆盖

return Response.success(list, HttpHeaderParser.parseCacheHeaders(response));

HttpHeaderParser.parseCacheHeaders(response) 返回 null,因为服务器在其响应 header 中设置为“无缓存”...无论如何,我仍然希望将此数据缓存可变设置的小时数(可能是 24 小时) , 我如何通过创建一个 volley Cache.Entry 来做到这一点...据我所知,URL 被用作缓存键值(我希望它是 URL)。

综上所述,由于 HttpHeaderParser.parseCacheHeaders(response) 返回 null,我想创建一个新的 Cache.Entry,它设置为 24 小时后过期,缓存键是请求的 URL。

有什么想法吗?

谢谢!

最佳答案

我遇到了同样的问题并最终得到了这个解决方案:

@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {

// Create a FakeCache that invalidate the data after 24 hour
Cache.Entry mFakeCache = HttpHeaderParser.parseCacheHeaders(response);
mFakeCache.etag = null;
mFakeCache.softTtl = System.currentTimeMillis() + 86400 * 1000;
mFakeCache.ttl = mFakeCache.softTtl;

return Response.success(response.data, mFakeCache);
}

关于android - 截击 : How to set up a Cache. 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com