Y at-il un moyen plus rapide pour effacer une cache personnalisée à l'aide de l'objet cacheGetSession?

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

Question

Je sais que je peux utiliser les API de cache ColdFusion aux données claires en tant que tel:

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

Mais dans la pratique la récupération de tous les IDs (à savoir cacheGetAllIds()) pour faire la suppression est lente (par exemple secondes). Où je pense qu'il devrait y avoir une façon si je commence complètement sur d'avoir cela se produire en millisecondes. Dans mon cas particulier, le cache personnalisé est disque persistant et peut être 100s de méga-octets sur le disque.

Je suis soupçonner qu'il ya un moyen plus rapide pour effacer ceci en utilisant des méthodes sur cacheGetSession(), peut-être conjointement avec les API ColdFusion. Donc, demander de voir si quelqu'un a une certaine connaissance de la façon de le faire, et rendent heureux ColdFusion en même temps, avant que je commence à regarder sous le capot moi.

Mise à jour

On dirait qu'il pourrait être possible d'utiliser cacheGetSession (cacheName, true) .REMOVEALL () parce que l'objet retourné est de type net.sf.ehcache.Cache , qui met en œuvre net.sf.ehcache .Ehcache . Et cette interface spécifie un removeAll () méthode. Je n'ai pas encore essayé cependant.

Était-ce utile?

La solution

le fait:

cacheGetSession(cacheName, true).removeAll()

Avec environ 10K + enregistrements, il est retourné en 60 ms.

FYI: cachGetSession () est une fonction ColdFusion 9.0.1

Autres conseils

Je n'ai pas testé, mais est-ce plus vite? Juste au cas où ArrayToList() est le goulot d'étranglement.

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

référence: http://www.aaronwest.net/blog/index.cfm/2009/11/28/14-Days-of-ColdFusion-9-Caching-Day -12 - Retrait-All-articles-en-Cache

Si la performance est vraiment un problème pour vous, un rapport de bug? http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top