EHCacheのtimeToLiveSecondsとtimeToIdleSecondsの違い

ドキュメントを読んでもよくわからんかったけど、ここの説明をみてようやく理解できた。

timeToLive is a total time an entry stays in a cache region. timeToIdle specifies how long it should stay in cache if it is not referenced.

https://forums.hibernate.org/viewtopic.php?f=1&t=983635&view=previous

こんな感じ。

timeToIdleSeconds
意味的には参照間生存期間、みたいな感じかな。この時間のあいだ参照されなかったらキャッシュから削除される。ということはこの時間内で参照され続ければ、削除はされない。
timeToLiveSeconds
こっちは最大生存期間、みたいな感じか。この時間が経過すると必ずキャッシュから削除される。参照されてようがなかろうが問答無用。

timeToLiveSeconds < timeToIdleSecondsの場合

These two values work together. However, a timeToLive < timeToIdle setting doesn't make much sense.

timeToLiveSeconds < timeToIdleSecondsはうまくないというのはその通り。
timeToIdleSecondsで設定した時間内にアクセスがあっても、先にtimeToLiveSecondsで設定した生存期間を過ぎて削除されちゃったら意味ないもんね。

逆にtimeToIdleSeconds < timeToLiveSecondsは意味がある。
timeToLiveSecondsで設定した時間が経つと必ず削除されるけど、timeToIdleSecondsで設定した時間内に参照されれば、そのときはキャッシュからデータを返してくれる。