CacheGetSessionオブジェクトを使用してカスタムキャッシュをクリアするより速い方法はありますか?

StackOverflow https://stackoverflow.com/questions/4099464

質問

ColdFusion Cache APIを使用してデータをクリアできることを知っています。

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

しかし、実際にはすべてのIDを取得します(つまり、 cacheGetAllIds())削除を行うには遅い(例:秒)。私がこれをミリ秒単位で実現するために完全にやり直しているなら、私が考えているのは方法があるべきだと思っています。私の特定のケースでは、カスタムキャッシュはディスクの持続性があり、ディスク上の100メガバイトになる可能性があります。

メソッドを使用してこれをクリアするためのより速い方法があると疑っています cacheGetSession(), 、おそらくColdFusion APIと組み合わせて。だから誰かがこれを行う方法について何らかの知識を持っているかどうかを確認するように頼む、 私がフードの下を自分で見始める前に、ColdFusionを同時に幸せにしてください。

アップデート

使用できるように見えます キャシェットセッション(cachename、true).removeall()返品されたオブジェクトがタイプであるため net.sf.ehcache.cache, 、それを実装します net.sf.ehcache.ehcache. 。このインターフェイスは、メソッドremoveall()を指定します。まだ試していません。

役に立ちましたか?

解決

これはそれをします:

cacheGetSession(cacheName, true).removeAll()

約10k以上のレコードで60ミリ秒で返されました。

参考までに:cachgetsession()はcoldfusion 9.0.1機能です

他のヒント

私はこれをテストしていませんが、これはより速いですか?念のため 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top