我知道我可以使用 ColdFusion 缓存 API 来清除数据:
<cfset cacheName = "custom">
<cfset ids = cacheGetAllIds(cacheName)>
<cfset cacheRemove(arrayToList(ids), false, cacheName)>
但在实践中,检索所有 ids(即cacheGetAllIds()
)进行删除很慢(例如秒)。如果我完全重新开始以在几毫秒内发生这种情况,我认为应该有一种方法。在我的特定情况下,自定义缓存是磁盘持久的,并且可以在磁盘上达到 100 兆字节。
我怀疑有一种更快的方法可以使用 on 方法清除它cacheGetSession()
,也许与 ColdFusion API 结合使用。因此,在我自己开始深入了解之前,询问是否有人知道如何做到这一点,同时让 ColdFusion 开心。
更新
看起来可能可以使用cacheGetSession (cacheName, true).removeAll() 因为返回的对象是net.sf.ehcache.Cache类型,它实现了 net.sf.ehcache.Ehcache。并且这个接口指定了一个方法removeAll()。虽然还没有尝试过。