游戏框架 2.2.6。默认缓存过期

PlayFramework 2.2.6. Default cache expiration

我想将 Java 对象存储在用户会话的缓存中。我想知道什么是默认缓存存储超时。

我的用户在早上 8 点登录,我会将他的用户对象存储在缓存中。它会保留 f.e 吗?用户退出前 10 小时? play 2.2.6 缓存执行默认会存数据10小时吗?

我不想在 cookie 中保留太多用户数据,因为用户可以从网络浏览器看到它的内容。

这是我基于的文档:

https://www.playframework.com/documentation/2.2.x/JavaCache

但是没有任何消息。

下面是我的缓存相关方法:

    public static Object getCacheValue(String key) {
        return Cache.get(getSessionValue("id") + "_" + key);
    }
    public static void setCacheValue(String key, Object value) {
        Cache.set(getSessionValue("id") + "_" + key, value);
    }
    public static void removeCacheValue(String key) {
        Cache.remove(getSessionValue("id") + "_" + key);
    }

以下是我的session相关方法:

public static String getSessionValue(String key) {
     return session().get(key);
}
public static void setSessionValue(String key, String value) {
     session(key, value);
}

您可以选择指定缓存的过期时间 - 以秒为单位 (https://www.playframework.com/documentation/2.2.x/JavaCache)。如果不这样做,则默认值为 0,这意味着数据将永远(无限期)保留在缓存中:

https://github.com/playframework/playframework/blob/2.2.x/framework/src/play-cache/src/main/scala/play/api/cache/Cache.scala#L50-L59

当然因为这只是一个缓存,所以你不能真的依赖"forever"。永远记住缓存就是缓存,你的数据可能会消失——你必须有一个备份策略来检索它。