Почему настройка cacheTimeout для renderView() в приложении ColdBox не влияет?
Я разрабатываю приложение 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 минут.
Есть что-то, чего мне не хватает?
2 ответа
Убедитесь, что вы включили кэширование представлений в вашей конфигурации ColdBox. Перейти к /config/ColdBox.cfc
файл и добавьте этот ключ:
coldbox = {
// Activate view caching
viewCaching = true
}
Кроме того, вы неправильно набрали имя CFC, которое вы изменили для кэширования выше? Эти изменения должны быть в /config/CacheBox.cfc
файл, а не в /config/ColdBox.cfc
,
Очевидно, что также reapFrequency
в /config/ColdBox.cfc
необходимо установить меньшее значение, чтобы запись кэша была удалена ранее.
Хотя, как говорится в документации:
Задержка в минутах для получения кеша (не гарантируется)
Не гарантируется, что кешированный элемент действительно будет удален после этого времени, поэтому может случиться так, что кеш пуст через 3 минуты, даже когда reapFrequency
установлен в 1
,