我通过putCache()
将一些对象存储在缓存中
缓存中的对象超时为10分钟。
这些对象在所有用户之间共享。但是,有2-3个变量与用户有关。 目前,每个对象都将这些依赖于用户的变量存储在用户会话中。
问题:
10分钟后从缓存中删除组件时,不会删除用户会话中的变量。
因此,可能在12分钟后再次创建对象并将2个新变量写入用户会话
注意:每个对象都将在会话范围内使用唯一名称创建 new 结构。旧的变量不能被覆盖,因为新对象不知道前一个对象的结构名称。
示例:对象是“list.cfc”,可以有20个不同的列表,每个列表存储完全不同的数据。在会话中,我们只存储当前用户的“list_position”; list_items存储在缓存中,对所有用户都是一样的。
我们希望在销毁对象时清理会话变量。怎么办呢?
这个想法:在php中我会使用__destruct()
方法,但我在ColdFusion中找不到相应的方法。
答案 0 :(得分:2)
当然,最简单的方法是抽象会话变量的命名,以便can
直接引用它们。 EG:听起来好像你现在有这个:
// in Cache.cfc
// [...]
someVarInTheCache = sessionReference[uniqueKey]
你的对象不知道那个键吗?
你能不能这样做:
someVarInTheCache = sessionReference.someVarRepresentingTheCache[uniqueKey]
然后当你杀死缓存时,你只需要杀死session.someVarRepresentingTheCache
,而不需要知道密钥。