Class Cache

缓存

对特定缓存的引用。

借助此类,您可以向缓存中插入、检索和移除内容。如果您需要频繁访问价格昂贵或速度缓慢的资源,这种方法尤为有用。例如,假设您在 example.com 上有一个 RSS Feed,提取需要 20 秒,但您希望加快平均请求的访问速度。

function getRssFeed() {
  const cache = CacheService.getScriptCache();
  const cached = cache.get('rss-feed-contents');
  if (cached != null) {
    return cached;
  }
  const result = UrlFetchApp.fetch(
      'http://example.com/my-slow-rss-feed.xml');  // takes 20 seconds
  const contents = result.getContentText();
  cache.put('rss-feed-contents', contents, 1500);  // cache for 25 minutes
  return contents;
}
如果项不在缓存中,您仍然需要等待 20 秒,但后续调用将非常快,直到该项在 25 分钟后从缓存中过期。

方法

方法返回类型简介
get(key)String获取给定键的缓存值,如果未找到,则返回 null
getAll(keys)Object返回一个 JavaScript 对象,其中包含缓存中针对键数组找到的所有键值对。
put(key, value)void将键值对添加到缓存中。
put(key, value, expirationInSeconds)void将键值对及其到期时间(以秒为单位)添加到缓存中。
putAll(values)void将一组键值对添加到缓存中。
putAll(values, expirationInSeconds)void将一组键值对及其到期时间(以秒为单位)添加到缓存中。
remove(key)void使用给定键从缓存中移除条目。
removeAll(keys)void从缓存中移除一组条目。

详细文档

get(key)

获取给定键的缓存值,如果未找到,则返回 null

// Gets the value from the cache for the key 'foo'.
const value = CacheService.getScriptCache().get('foo');

参数

名称类型说明
keyString要在缓存中查找的键

返回

String - 缓存的值,如果未找到,则为 null


getAll(keys)

返回一个 JavaScript 对象,其中包含缓存中针对键数组找到的所有键值对。

// Gets a set of values from the cache
const values = CacheService.getDocumentCache().getAll(['foo', 'x', 'missing']);
// If there were values in the cache for 'foo' and 'x' but not 'missing', then
// 'values' would be: {'foo': 'somevalue', 'x': 'othervalue'}

参数

名称类型说明
keysString[]要查找的键

返回

Object - 一个 JavaScript 对象,其中包含缓存中找到的所有键的键值对

另请参阅


put(key, value)

将键值对添加到缓存中。

键的长度上限为 250 个字符。每个键可以存储的数据量上限为 100KB。该值会在 600 秒(10 分钟)后从缓存中过期。

缓存项的上限为 1,000 项。如果写入的项超过 1,000 个,则缓存会存储距离失效时间最远的 900 个项。此限制可能会发生变化。

const cache = CacheService.getScriptCache();
// Puts the value 'bar' into the cache using the key 'foo'
cache.put('foo', 'bar');

参数

名称类型说明
keyString用于存储值的键
valueString要缓存的值

put(key, value, expirationInSeconds)

将键值对及其到期时间(以秒为单位)添加到缓存中。

键的长度上限为 250 个字符。每个键可以存储的数据量上限为 100KB。指定的到期时间只是建议;如果缓存了大量数据,系统可能会在此时间之前移除缓存数据。

缓存项的上限为 1,000 项。如果写入的项超过 1,000 个,则缓存会存储距离失效时间最远的 900 个项。此限制可能会发生变化。

// Puts the value 'bar' into the cache using the key 'foo', but only for the
// next 20 seconds.
CacheService.getScriptCache().put('foo', 'bar', 20);

参数

名称类型说明
keyString用于存储值的键
valueString要缓存的值
expirationInSecondsInteger值在缓存中保留的最长时间(以秒为单位)。最短为 1 秒,最长为 21600 秒(6 小时)。

putAll(values)

将一组键值对添加到缓存中。

与重复调用“put”类似,但效率更高,因为它只会对 memcache 服务器进行一次调用来设置所有值。键的长度上限为 250 个字符。每个键可以存储的数据量上限为 100KB。这些值将在 600 秒(10 分钟)后从缓存中过期。

缓存项的上限为 1,000 项。如果写入的项超过 1,000 个,则缓存会存储距离失效时间最远的 900 个项。此限制可能会发生变化。

// Puts a set of values into the cache with the keys 'foo', 'x', and 'key'.
const values = {
  foo: 'bar',
  x: 'y',
  key: 'value',
};
CacheService.getUserCache().putAll(values);

参数

名称类型说明
valuesObject一个包含字符串键和值的 JavaScript 对象

另请参阅


putAll(values, expirationInSeconds)

将一组键值对及其到期时间(以秒为单位)添加到缓存中。

与重复调用“put”类似,但效率更高,因为它只会对 memcache 服务器进行一次调用来设置所有值。键的长度上限为 250 个字符。每个键可以存储的数据量上限为 100KB。指定的到期时间只是建议;如果缓存了大量数据,系统可能会在此时间之前移除缓存数据。

缓存项的上限为 1,000 项。如果写入的项超过 1,000 个,则缓存会存储距离失效时间最远的 900 个项。此限制可能会发生变化。

// Puts a set of values into the cache with the keys 'foo', 'x', and 'key'.
const values = {
  foo: 'bar',
  x: 'y',
  key: 'value',
};
CacheService.getUserCache().putAll(values, 20);

参数

名称类型说明
valuesObject一个包含字符串键和值的 JavaScript 对象
expirationInSecondsInteger值在缓存中保留的最长时间(以秒为单位)。允许的最短到期时间为 1 秒,允许的最长到期时间为 21600 秒(6 小时)。默认过期时间为 600 秒(10 分钟)。

另请参阅


remove(key)

使用给定键从缓存中移除条目。

// Removes any cache entries for 'foo'
CacheService.getUserCache().remove('foo');

参数

名称类型说明
keyString要从缓存中移除的键

removeAll(keys)

从缓存中移除一组条目。

// Removes entries from the cache with keys 'foo' and 'x'
CacheService.getDocumentCache().removeAll(['foo', 'x']);

参数

名称类型说明
keysString[]要移除的键的数组