代码之家  ›  专栏  ›  技术社区  ›  orangepips 111111

有没有一种更快的方法可以使用cacheGetSession对象清除自定义缓存?

  •  2
  • orangepips 111111  · 技术社区  · 14 年前

    我知道我可以使用ColdFusion缓存api清除数据:

    <cfset cacheName = "custom">
    <cfset ids = cacheGetAllIds(cacheName)>
    <cfset cacheRemove(arrayToList(ids), false, cacheName)>
    

    但实际上检索所有的ID(即。 cacheGetAllIds()

    我怀疑有一种更快的方法可以通过 cacheGetSession() ,可能与ColdFusion API结合使用。所以想看看有没有人知道怎么做,

    更新

    似乎可以用 cacheGetSession net.sf.ehcache.Cache ,它实现了 net.sf.ehcache.Ehcache . 这个接口指定了removeAll()方法。不过还没试过。

    2 回复  |  直到 14 年前
        1
  •  3
  •   orangepips 111111    14 年前

    这样做:

    cacheGetSession(cacheName, true).removeAll()
    

    仅供参考:cachGetSession()是ColdFusion 9.0.1函数

        2
  •  1
  •   Henry    14 年前

    我还没测试过这个,但速度快一点吗?以防万一 ArrayToList() 是瓶颈。

    <cfloop index="cache" array="#cacheGetAllIds(cacheName)#">
        <cfset cacheRemove(cache, false, cacheName)>
    </cfloop>
    

    参考: http://www.aaronwest.net/blog/index.cfm/2009/11/28/14-Days-of-ColdFusion-9-Caching-Day-12--Removing-All-Items-in-Cache

    http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html