NetSuite API|Cache模块的基本使用

一、模块概述

临时存储短期数据,适用于所有服务器脚本类型。

二、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);
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享