当一个项被放入缓存时,它有一个超时分配给它(通过调用Put()显式地,或者从缓存配置中隐含)。我想更新/重置我检索的每一项的失效调用Get()。
是否需要显式地放置/更新项目,还是会自动将过期时间更新到现在+超时?
==UPDATE==
看起来这样做的目的是应该调用ResetObjectTimeout()方法。在文档中,我没有看到其他提到过期更新逻辑的地方。
==UPDATE 2==
在快速测试/实验中,ResetObjectTimeout()生成的网络流量与使用Put()的流量一样多,因此似乎整个条目都是通过网络传输的,只是为了更新超时。我尝试了每个项目不同数量的数据,尽管我没有添加任何新项目,但是流量水平确实随着数据量的增加而增加。
我想更新超时的原因是,我希望缓存项在最后一次使用后在缓存中保留N分钟。我预计这将是一个非常常见的使用模式,要实现它,我需要在每次get操作中通过网络重新发送所有数据,这大大降低了使用缓存的好处,例如限制了可伸缩性和性能。
发布于 2012-12-18 08:42:50
不,因为所有的暂停都是绝对的。
正如您所发现的,在Data.Cache中有一种用于重置超时的方法(实际上,它允许您在不获取数据的情况下应用新的超时,而实际上不允许休息)。
根据您的场景,通读和写后可以帮助您查看这里。
https://stackoverflow.com/questions/13919376
复制相似问题