组件销毁期间的清理(ColdFusion)

时间:2014-02-05 09:03:32

标签: session coldfusion cfc

我通过putCache()将一些对象存储在缓存中 缓存中的对象超时为10分钟。

这些对象在所有用户之间共享。但是,有2-3个变量与用户有关。 目前,每个对象都将这些依赖于用户的变量存储在用户会话中。

问题:

10分钟后从缓存中删除组件时,不会删除用户会话中的变量。 因此,可能在12分钟后再次创建对象并将2个新变量写入用户会话
注意:每个对象都将在会话范围内使用唯一名称创建 new 结构。旧的变量不能被覆盖,因为新对象不知道前一个对象的结构名称。

示例:对象是“list.cfc”,可以有20个不同的列表,每个列表存储完全不同的数据。在会话中,我们只存储当前用户的“list_position”; list_items存储在缓存中,对所有用户都是一样的。

我们希望在销毁对象时清理会话变量。怎么办呢?

这个想法:在php中我会使用__destruct()方法,但我在ColdFusion中找不到相应的方法。

1 个答案:

答案 0 :(得分:2)

当然,最简单的方法是抽象会话变量的命名,以便can直接引用它们。 EG:听起来好像你现在有这个:

// in Cache.cfc
// [...]
someVarInTheCache = sessionReference[uniqueKey]

你的对象不知道那个键吗?

你能不能这样做:

someVarInTheCache = sessionReference.someVarRepresentingTheCache[uniqueKey]

然后当你杀死缓存时,你只需要杀死session.someVarRepresentingTheCache,而不需要知道密钥。