هل هناك طريقة أسرع لمسح ذاكرة التخزين المؤقت المخصصة باستخدام كائن CacheGetSession؟

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

سؤال

أعلم أنه يمكنني استخدام واجهات برمجة تطبيقات Coldfusion Cache لمسح البيانات على هذا النحو:

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

ولكن في الممارسة العملية استرداد جميع الهوية (أي cacheGetAllIds()) للقيام بالحذف بطيء (مثل الثواني). حيث أفكر في أنه يجب أن يكون هناك طريقة إذا بدأت تمامًا في حدوث ذلك بالميلي ثانية. في حالتي الخاصة ، يكون ذاكرة التخزين المؤقت المخصصة مستمرة ويمكن أن تكون 100s من Megabytes على القرص.

أشك في أن هناك طريقة أسرع لمسح ذلك باستخدام الأساليب cacheGetSession(), ، ربما بالتزامن مع واجهات برمجة تطبيقات Coldfusion. لذا طلب معرفة ما إذا كان لدى شخص ما بعض المعرفة بكيفية القيام بذلك ، و اجعل Coldfusion سعيدًا في نفس الوقت ، قبل أن أبدأ في النظر إلى الغطاء بنفسي.

تحديث

يبدو أنه قد يكون من الممكن استخدامه cachegetsession(Cachename ، True) .removeall () لأن الكائن الذي تم إرجاعه من النوع net.sf.ehcache.cache, الذي ينفذ net.sf.ehcache.ehcache. وهذه الواجهة تحدد طريقة إزالة (). لم تجربها بعد.

هل كانت مفيدة؟

المحلول

هذا يفعل:

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-ietems-in-cache

إذا كان الأداء يمثل مشكلة بالنسبة لك ، فاطلب تقرير الأخطاء؟ http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top