Я знаю, что могу использовать API-интерфейсы кеша ColdFusion для очистки данных следующим образом:
<cfset cacheName = "custom">
<cfset ids = cacheGetAllIds(cacheName)>
<cfset cacheRemove(arrayToList(ids), false, cacheName)>
Но на практике извлечение всех идентификаторов (т. Е. cacheGetAllIds()
) для удаления выполняется медленно (например, в секундах).Где я думаю, должен быть способ, если я полностью начинаю, чтобы это произошло за миллисекунды.В моем конкретном случае пользовательский кэш является постоянным на диске и может занимать 100 мегабайт на диске.
Я подозреваю, что есть более быстрый способ выяснить это, используя методы на cacheGetSession()
, возможно, в сочетании с API ColdFusion.Поэтому, спрашивая, есть ли у кого-то знания о том, как это сделать, и делают ColdFusion одновременно счастливым, прежде чем я сам начну заглядывать под капот.
Обновление
Похоже, можно использовать cacheGetSession (cacheName, true) .removeAll (), поскольку возвращаемый объект имеет тип net.sf.ehcache.Cache , который реализует net.sf.ehcache.Ehcache .И этот интерфейс указывает метод removeAll ().Хотя еще не пробовал.