Я разрабатываю приложение ColdBox с модулями и хотел использовать его функции кэширования для кэширования представления в течение некоторого времени.
component{
property name="moduleConfig" inject="coldbox:moduleConfig:mymodule";
...
function widget(event, rc, prc){
var viewData = this.getData();
return renderView(
view = "main/widget",
args = viewData,
cache = true,
cacheSuffix = ":" & moduleConfig.entryPoint,
cacheTimeout = 2
);
}
}
Я попытался установить конфигурацию кэширования по умолчанию, добавив следующую информацию в свой Cachebox.cfc и удалив cacheTimeout
из приведенного выше кода:
cacheBox = {
defaultCache = {
objectDefaultTimeout = 1, //two hours default
objectDefaultLastAccessTimeout = 1, //30 minutes idle time
useLastAccessTimeouts = false,
reapFrequency = 5,
freeMemoryPercentageThreshold = 0,
evictionPolicy = "LRU",
evictCount = 1,
maxObjects = 300,
objectStore = "ConcurrentStore", //guaranteed objects
coldboxEnabled = false
},
caches = {
// Named cache for all coldbox event and view template caching
template = {
provider = "coldbox.system.cache.providers.CacheBoxColdBoxProvider",
properties = {
objectDefaultTimeout = 1,
objectDefaultLastAccessTimeout = 1,
useLastAccessTimeouts = false,
reapFrequency = 5,
freeMemoryPercentageThreshold = 0,
evictionPolicy = "LRU",
evictCount = 2,
maxObjects = 300,
objectStore = "ConcurrentSoftReferenceStore" //memory sensitive
}
}
}
};
Хотя на кеширование это никак не повлияло. Я также попытался добавить указанную выше конфигурацию в свой Coldbox.cfc.
Даже если я создам совершенно новое тестовое приложение через CommandBox через coldbox create app MyApp
, а затем только установлю кэширование в Cachebox.cfc на одну минуту, установлю viewCaching = true
в Coldbox.cfc и установлю event.setView( view="main/index", cache=true )
в Main.cfc, оно не работает как ожидал.
Что бы я ни делал, представление всегда сохраняется в кэше не менее 5 минут.
Есть ли что-то, что мне не хватает?