我正在使用模块开发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。
即使我通过coldbox create app MyApp
通过CommandBox创建一个全新的测试应用程序,只需将Cachebox.cfc中的缓存设置为一分钟,在Coldbox.cfc中设置viewCaching = true
,然后设置{{在Main.cfc中,它没有按预期工作。
无论我做什么,视图总是缓存至少5分钟。
我有什么遗失的吗?
答案 0 :(得分:1)
确保已在ColdBox配置中启用了视图缓存。转到/config/ColdBox.cfc
文件并添加以下密钥:
coldbox = {
// Activate view caching
viewCaching = true
}
另外,您是否错误输入了您为上面的缓存更改的CFC的名称?这些更改应位于/config/CacheBox.cfc
文件中,而不是/config/ColdBox.cfc
。
答案 1 :(得分:0)
显然,reapFrequency
中的/config/ColdBox.cfc
也需要设置为较小的值,以便先删除缓存条目。
尽管如此documentation states:
产生缓存的延迟(以分钟为单位)(不保证)
无法保证在此之后它真正删除的缓存项目,因此即使reapFrequency
设置为1
,也可能在3分钟后缓存为空。