服务器向我发送json对象、过期和ETAG。我希望Voley将这个对象保存在缓存中,并在下一次请求该对象时使用对服务器的请求,包括在报头中的ETag。如果响应将是304不修改,那么它应该使用缓存的资源,如果它将是200OK,它应该使用来自服务器的新资源。
Volley根本不发送请求(如果缓存未过期),或者如果缓存过期,则发送带有If-None-Match+etag字符串的新请求。并且服务器总是以200响应
如果Volley检测到缓存条目尚未过期,它将不会向服务器发出请求。下面是一些代码摘录来证明:
// If it is completely expired, just send it to the network.
if (entry.isExpired()) {
request.addMarker("cache-hit-expired");
request.setCacheEntry(entry);
mNetworkQueue.put(request);
continue;
}
和:
if (!entry.refreshNeeded()) {
// Completely unexpired cache hit. Just deliver the response.
mDelivery.postResponse(request, response);
} else {
// Soft-expired cache hit. We can deliver the cached response,
// but we need to also send the request to the network for
// refreshing.
request.addMarker("cache-hit-refresh-needed");
request.setCacheEntry(entry);
// Mark the response as intermediate.
response.intermediate = true;
// Post the intermediate response back to the user and have
// the delivery then forward the request along to the network.
mDelivery.postResponse(request, response, new Runnable() {
@Override
public void run() {
try {
mNetworkQueue.put(request);
} catch (InterruptedException e) {
// Not much we can do about this.
}
}
});
}
您可能希望通过在cache-control
或expires
头设置max-age
来控制服务器上的资源过期,以便调整客户端上的缓存。
在我的Android应用程序中,我使用Volley在自定义列表视图中加载图像。 当我多次刷新(删除所有项目并加载tiems)listview时,我的应用程序就会被这条消息杀死 我该怎么修好它?
在我的项目中,我使用了一个@Cacheable注释ia一个服务方法,它返回涉及书籍和一些标记的计算结果,我想在一个@Controller类方法中退出缓存,该方法将一本新书添加到数据库中,因为这本新书将是新计算所必需的。 服务类:@Cacheable("metas") 控制器类:@RequestMapping@CacheEvict(value=“metas”,allEntries=true)
我想要什么?使用缓存和度量 为什么? 更快的响应 一些度量数据可以用来评估以下内容:总点击率、平均持续时间、最小持续时间、最大持续时间。。。等等 我试过: 和 应用这两种方法: 两者都按预期工作(第一次通话)...甜蜜! 问题是,因为缓存只在第一次调用时运行该方法,后续调用直接通过缓存处理,并且不再记录度量。 我知道quarkus缓存扩展仍在预览中。据我所知,微文件与缓存无关。 是的。。。 “千分
我使用的是springboot 2.1.1。我使用@Enable缓存启用了缓存 CacheManager已创建并可以注入到我的类中。 一旦我添加了一个库https://github.com/MarcGiffing/bucket4j-spring-boot-starter启动应用程序时出错: 经过大量调试,我无法找到库破坏CacheManager的原因和方式。 似乎没有使用CacheAutoConf
我想将主数据缓存到Redis。 所以,我写了这些代码。 和 和ymlfile 但是,缓存不工作... 无论何时调用printTest方法,都将执行“getTest”方法。Redis没有数据。。。我的代码中有什么问题? SpringBoot版本是1.4.0 依赖关系是
我正在使用Android截击来发出请求。所以我使用这个代码。我不明白一件事。我在服务器中检查params是否始终为null。我认为GETPARAMS()不工作。我应该做些什么来解决这个问题。