以下列方式制作Spring服务的图像:
+--------+ +---------+ +---------+ |Backend | --------- | My | ----------- | Clients | |service | | service | | | +--------+ +---------+ +---------+
为了不向后端发出太多请求,我使用了Ehcache。 想象一下,我的服务是一个体育门户,我缓存结果,以便当客户端请求它们时,我返回缓存,如果没有缓存,我从后端获取信息,将其放入缓存,然后将其返回到客户端。
现在,如果我设置了这些参数
long timeToLiveSeconds
long timeToIdleSeconds
并且客户端经常提出请求,timeToIdleSeconds
将不会过期,但timeToLiveSeconds
无论如何都将过期,并且该元素将从我放置的缓存中删除,对?
答案 0 :(得分:4)
是的,你是对的。
例如:
timeToIdleSeconds = 30
:如果在30秒内没有请求缓存的对象,则expires =>最后访问时间计数
timeToLiveSeconds = 60
:60秒后缓存的对象将过期 - 无论请求或请求的频率是多少=>创造时间计数
来自文档(旧版本1.4):
timeToIdleSeconds
: 设置元素到期前的空闲时间。 即元素到期之前访问之间的最长时间 仅在元素不是永恒时使用。 可选属性。值为0表示Element可以为无穷大空闲。 默认值为0.
timeToLiveSeconds
: 设置元素到期前的生存时间。 即创建时间与元素到期之间的最长时间。 仅在元素不是永恒时使用。 可选属性。值为0意味着元素可以为无限生存。 默认值为0.
答案 1 :(得分:0)
如果同时设置两者,expirationTime
将为Math.min(ttlExpiry, ttiExpiry)
,其中
ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle
完整源代码here。