首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么cacheTimeout应用程序中的renderView()设置没有影响?

为什么cacheTimeout应用程序中的renderView()设置没有影响?
EN

Stack Overflow用户
提问于 2017-02-16 10:33:21
回答 2查看 115关注 0票数 2

我正在开发一个带有模块的ColdBox应用程序,并希望使用它的缓存功能来缓存视图一段时间。

代码语言:javascript
复制
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

代码语言:javascript
复制
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分钟。

我遗漏了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2017-02-16 12:28:55

确保在ColdBox配置中启用了视图缓存。转到/config/ColdBox.cfc文件并添加以下键:

代码语言:javascript
复制
coldbox = {
  // Activate view caching
  viewCaching = true
}

另外,您是否为上面的缓存键入了您更改的CFC的名称?这些更改应该在/config/CacheBox.cfc文件中,而不是在/config/ColdBox.cfc中。

票数 1
EN

Stack Overflow用户

发布于 2017-02-20 10:58:19

显然,还需要将/config/ColdBox.cfc中的/config/ColdBox.cfc设置为较小的值,以便更早地删除缓存条目。

不过,作为文献状态

产生缓存的延迟(没有保证),以分钟为单位

这并不能保证缓存后它真正删除的缓存项,所以即使当reapFrequency设置为1时,缓存也可以在3分钟后为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42271355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档