我正在开发一个带有模块的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中的缓存设置为1分钟,在Coldbox.cfc中设置viewCaching = true,在Main.cfc中设置event.setView( view="main/index", cache=true ),它也不像预期的那样工作。
无论我做什么,视图总是至少缓存5分钟。
我遗漏了什么吗?
发布于 2017-02-16 12:28:55
确保在ColdBox配置中启用了视图缓存。转到/config/ColdBox.cfc文件并添加以下键:
coldbox = {
// Activate view caching
viewCaching = true
}另外,您是否为上面的缓存键入了您更改的CFC的名称?这些更改应该在/config/CacheBox.cfc文件中,而不是在/config/ColdBox.cfc中。
发布于 2017-02-20 10:58:19
显然,还需要将/config/ColdBox.cfc中的/config/ColdBox.cfc设置为较小的值,以便更早地删除缓存条目。
不过,作为文献状态
产生缓存的延迟(没有保证),以分钟为单位
这并不能保证缓存后它真正删除的缓存项,所以即使当reapFrequency设置为1时,缓存也可以在3分钟后为空。
https://stackoverflow.com/questions/42271355
复制相似问题