一、模块概述
临时存储短期数据,适用于所有服务器脚本类型。
二、cache模块
1、模块方法
cache.getCache(options) 方法
检索指定名称的cache对象,如果cache对象存在,则此方法返回cache对象,否则系统将创建新的cache对象
返回值:cahce.Cache对象
支持脚本类型:服务器脚本
用量:无
参数 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
options.name | string | 必需 | 要检索或要创建的cache对象的名称,该名称的最大大小为1 KB。 |
| options.scope | string | 可选 | 设置缓存的可用性。
使用cache.Scope设置此值,默认值为cache.Scope.PRIVATE |
var myCache = cache.getCache({
name: 'temporaryCache',
scope: cache.Scope.PRIVATE
});
复制代码
2、模块属性
cache.Scope
描述cache对象可用性的字符串值
值 | 描述 |
---|---|
PRIVATE | cache对象仅适用于当前脚本,默认值 |
| PROTECTED | cache对象仅对某些脚本可用:
如果脚本是bundle的一部分,则缓存可用于同一bundle中的所有脚本
如果脚本不在bundle中,则缓存可用于不在任何bundle中的所有脚本 |
| PUBLIC | cache对象可用于NetSuite帐户中的所有服务器脚本 |
三、cache.Cache对象
1、对象方法
Cache.put(options)方法
将值放入到cache对象中
返回值:void
支持脚本类型:服务器脚本
用量:1个单位
建议使用Cache.get()方法的options.loader参数将值放入到cache对象中
范围 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
options.key | string | 必需的 | 从cache对象中检索到的值的标识符。该值不能为空。 |
options.value | string | 必需的 | 放置在缓存中的值。如果该值不是字符串,则系统将使用JSON.stringify()转换该值,然后再将其放入缓存中。该值的最大大小为500KB。 |
| options.ttl | number | 可选的 | 该值可以保留在cache对象中的最大持续时间(以秒为单位)。请注意,在ttl达到限制之前,可能会删除该值。
最小值是300(五分钟),没有最大值。默认ttl值为无限制。
不能保证缓存的值在ttl值的整个持续时间内都保留在缓存中。该ttl值表示可以存储缓存的值的最长时间。缓存的数据不是持久性数据,建议将Cache.get(options) 方法与options.loader参数一起使用以设置和检索数据 |
var myCache = cache.getCache({
name: 'temporaryCache',
scope: cache.Scope.PRIVATE
});
myCache.put({
key: 'keyText',
value: 'valueText',
ttl: 300
});
复制代码
Cache.get(options) 方法
从cache对象中检索一个字符串值,该字符串值由options.key参数标识。如果cache对象中存在该标识的值则返回该值,否则调用options.loader参数设置的用户自定义方法
返回值:string/null
支持脚本类型:服务器脚本
用量:
如果值已经存在于cache对象中,用量为1个单位
如果使用了loader参数中的方法,用量为2个单位
参数 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
options.key | string | 必需的 | 从cache对象中检索值的标识符,该值不能为空。 |
| options.loader | function | 可选,但强烈建议 | 加载用户自定义方法,如果cache对象中不存在所请求的值,它将调用用户自定义方法。当用户自定义方法获取到一个值时,系统会自动将该值放入cache对象中。因此,NetSuite建议使用loader作为填充cache对象的主要方法。
如果加载的其它程序返回的值不是字符串,则系统将使用JSON.stringify()转换该值,然后再将其放入cache对象并返回值。可以放入缓存的值的最大大小为500KB。
如果未指定加载其它程序的方法,并且cache对象中缺少值,则将返回null。 |
| options.ttl | number | 可选的 | 由loader设置的用户程序检索到的值可以保留在高速缓存中的最大持续时间(以秒为单位)。请注意,可能会在ttl达到限制之前从缓存中删除该值。
最小值是300(五分钟),没有最大值。默认ttl值为无限制。
注意:不能保证缓存。 |
var myCache = cache.getCache({
name: 'temporaryCache',
scope: cache.Scope.PRIVATE
});
myCache.get({
key: 'temporaryCache',
loader: function() {
return file.load({
path: 'src/res/balance_sheet/'
}).getContents();
},
ttl:300
})
复制代码
Cache.remove(options) 方法
从cache对象中删除一个值
返回值:void
支持脚本类型:服务器脚本
用量:1个单位
参数 | 类型 | 必需/可选 | 描述 |
---|---|---|---|
options.key | string | 必需的 | 要删除的值的标识符。 |
var myCache = cache.getCache({
name: 'temporaryCache',
scope: cache.Scope.PRIVATE
});
myCache.remove({
key: 'keyText'
});
复制代码
四、示例代码
var myPeriod = runtime.getCurrentScript().getParameter('custscript_mcds_period');
var myCache = cache.getCache({
name : 'global_enddate_value_mtrl'
});
// 从cache中获取期间结束日期
var periodEndDate = myCache.get({
key : 'gPeriodEndDate_mtrl',
loader:function(){
return search.lookupFields({
type : 'accountingperiod',
id : myPeriod,
columns : [ 'enddate' ]
}).enddate;
}
});
// 获取货品数据
var endInvValue = getItemInvValue(item, periodEndDate);
复制代码