在Apps脚本中我需要一种方法来刷新缓存而不管密钥。或者,我需要一种方法来查找当前缓存的所有密钥。
当我们缓存项目时,我们会根据许多动态属性创建密钥,因此我们无法确定任何时候缓存中的密钥。
有没有办法在AppsScript中执行上述任一操作?我是否需要将密钥写入某个日志,然后当我想要刷新它时,只需删除我保存的密钥列表中的所有密钥?
我看过这里的文档:https://developers.google.com/apps-script/reference/cache/cache-service但找不到任何东西,所以我不太满怀希望。
只是想知道是否有其他人有解决方案来了解缓存中的密钥?
答案 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);
}