如何刷新缓存

时间:2013-12-05 11:33:12

标签: google-apps-script

在Apps脚本中我需要一种方法来刷新缓存而不管密钥。或者,我需要一种方法来查找当前缓存的所有密钥。

当我们缓存项目时,我们会根据许多动态属性创建密钥,因此我们无法确定任何时候缓存中的密钥。

有没有办法在AppsScript中执行上述任一操作?我是否需要将密钥写入某个日志,然后当我想要刷新它时,只需删除我保存的密钥列表中的所有密钥?

我看过这里的文档:https://developers.google.com/apps-script/reference/cache/cache-service但找不到任何东西,所以我不太满怀希望。

只是想知道是否有其他人有解决方案来了解缓存中的密钥?

2 个答案:

答案 0 :(得分:1)

没办法这样做。使缓存无效的更好方法是在每个缓存对象中存储一个版本,并将版本保留在scriptProperties中。 每当您从缓存中读取时,如果其版本低于scriptproperties中的全局版本,请忽略它。 要使缓存无效,只需从scriptProperties增加版本。

答案 1 :(得分:-1)

缓存比属性更快?不要这么认为,看看这个:

function propertiesUser() { // 1272.0 , 1135.0
  var value = { a: 'a', b: 'b' }
  var key = 'ab';
  PropertiesService.getUserProperties().setProperty(key, value);
  var i = 0;
  var t = Date.now();
  while (i<100) {
    Logger.log( PropertiesService.getUserProperties().getProperty(key))
    i++
  }
  Logger.log( Date.now()-t);
}

function propertiesScript() { // 1190.0
  var value = { a: 'a', b: 'b' }
  var key = 'ab';
  PropertiesService.getScriptProperties().setProperty(key, value);
  var i = 0;
  var t = Date.now();
  while (i<100) {
    Logger.log( PropertiesService.getScriptProperties().getProperty(key))
    i++
  }
  Logger.log( Date.now()-t);
}

function cache() { // 4141.0
  var value = { a: 'a', b: 'b' }
  var key = 'ab';
  CacheService.getUserCache().put(key, JSON.stringify(value))
  var i = 0;
  var t = Date.now();
  while (i<100) {
    Logger.log( CacheService.getUserCache().get(key) )
    i++
  }
  Logger.log( Date.now()-t);
}