intra-mart Accel Platform 脚本开发模式编程指南 第16版2020-04-01

缓存

什么是缓存

缓存是一项可以使用应用程序服务器上的内存保存Object 的功能。
通过缓存获取结果(例如数据库访问和文件访问)可以提高应用程序性能。

规格书

默认情况下,EHCache用作Cache实现。
有关EHCache的更多信息,请参见http://ehcache.org

如果超过了配置文件中指定的元素数量或大小限制,则将丢弃在缓存中注册的Object 。
此外,过去的有效期间Object 也将被丢弃的对象。
使用缓存时,有必要将一个具有任意名称的xml文件放在该缓存设置的%CONTEXT_PATH%/ WEB-INF / conf / im-ehcache-config /文件夹下。
以下是配置文件的示例。
<?xml版本=“ 1.0”编码=“ UTF-8”?>
<im-ehcache-config xmlns =“ http:// www.intra intra-mart .jp / cache / ehcache / config”
   xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance”
   xsi:schemaLocation =“宀:. //万维网intra-mart .JP /缓存/了Ehcache /配置IM-的Ehcache-Config.Xsd”>

   <缓存 名称=“ myCache”
         启用=“真”
         max-bytes-memory =“ 10m”
         内存中最大元素数=“ 100”
         溢出到磁盘=“真”
         max-bytes-disk =“ 50m”
         磁盘上最大元素数=“ 500”
         空闲时间=“ 600”
         生存时间=“ 3600” />

</ im-ehcache-config>

注意

将字符代码设置为UTF-8并保存。
有关每个设置的详细内容信息如下。
属性名称 说明
设置缓存名称。
使能 指定是或否。如果指定为false,则相应的缓存将无效。
最大内存 指定用于在内存中存储Object 的最大大小。可以使用1k,10M,50G等符号。
内存中的最大元素 指定要缓存在内存中的最大Object 数。
磁盘溢出 设置当超过要在内存中缓存的区域的上限时是否写入磁盘。
最大字节磁盘 指定用于在磁盘上存储Object 的最大大小。可以使用1k,10M,50G等符号。
磁盘上的最大元素 指定要在磁盘上缓存的最大Object 数。
空闲时间 指定空闲时间(秒)。如果在指定时间内未引用目标Object ,则销毁该Object 。
生存时间 指定寿命(秒)。如果超过指定的寿命,则该Object 将被破坏。

编程方式

函数getUsers(){//生成缓存实例。参数“ myCache”必须指定在im-ehcache-config中定义的缓存名称。 var cache = new Cache('myCache'); //尝试从缓存中获取信息。如果可以获取,则返回该值。 var users = cache.get('key'); if(users!= null){return users;} //由于缓存中没有信息,请从数据库获取信息。 var database = new TenantDatabase(); var result = database.select('SELECT user_cd FROM b_m_account_b'); //如果无法从数据库获取信息,请返回一个空数组。 //通常,需要日志输出和错误信息返回。请根据目的适当实施。 if(result.error){return [];} //将获取的信息存储在缓存中并返回。 users = []; for(var i = 0,length = result.data.length; i <length; i ++){var record = result.data [i]; users.push(record.user_cd);} //缓存存放并返回。 cache.put(“键”,用户);返回用户;}
从数据库检索数据的示例

注解

所有缓存生存期均遵循配置文件中描述的内容。
如果需要显式删除缓存,则可以通过调用Cache#remove或Cache#removeAll来删除它。

注解

当设置了“最大字节内存”和“最大字节磁盘”属性时,在高速缓存中注册Object 时,将计算Object 的大小。
在这种情况下,如果要注册的Object 具有对其他Object 的大量引用,则计算过程可能会花费很长时间并且会导致性能下降。
如果要注册的Object 具有超过1000个引用,则以下消息将输出到日志。
尝试计算对象图的大小时,已达到配置的1,000个对象引用的限制。如果继续进行大小调整操作,可能会导致性能严重下降。可以通过将CacheManger或Cache <sizeOfPolicy>元素maxDepthExceededBehavior设置为“ abort”来避免这种情况或添加带有@IgnoreSizeOf批注的停止点。如果在配置的限制范围内不降低性能,请使用CacheManager或Cache <sizeOfPolicy>元素maxDepth属性提高限制值。有关更多信息,请参阅Ehcache配置文档。
如果输出此日志,请检查要存储在缓存中的Object 的配置,或将“ max-bytes-memory”或“ max-bytes-disk”替换为“ max-elements-on-memory”,或考虑使用“磁盘上最大元素数”。