通过库使用缓存的行为不一致

时间:2018-11-06 22:07:41

标签: google-apps-script

我有一个Web应用程序,该应用程序从几个大型电子表格中提取数据,我们希望设置一个缓存来加快应用程序的速度,同时允许工作表根据需要更新缓存。

基本上,我们有一个缓存脚本,其中包含用于获取缓存,设置新缓存条目的功能以及一些用于清除/更新的测试功能。该Web应用程序可以毫无问题地提取缓存,但是当工作表尝试替换缓存的条目时(通过使用put(key,value,time)函数),获取缓存时不会显示更新的信息。网络应用。

为简化起见,我创建了四个准系统测试脚本:

  1. 缓存脚本

    function getCache() {
      var cache = CacheService.getScriptCache();
      var cached = cache.get("test");
    
      if (cached != null) {
        return cached;
      }
    
      cache.put("test", "a new cache", 1500);
      cached = cache.get("test");
      return cached;
    }
    
    function clearCache() {
      var cache = CacheService.getScriptCache();
      cache.remove("test");
    }
    
    function updateCache(contents) { 
      var cache = CacheService.getScriptCache();
      cache.put('test', contents);
    }
  2. 输出脚本(index.html有一个clearcache按钮,用于调用下面的clearCache()函数)

    function doGet() {
      var cache = cacher.getCache();
      var html = HtmlService.createHtmlOutputFromFile('index');
      return html.append(JSON.stringify(cache, null, 2));
    }
    
    function clearCache() {
      cacher.clearCache()
    }
    
  3. 更新缓存脚本

    function updateCache() {
      var contents = "Here is new data";
      cacher.updateCache(contents);
    }
    
  4. 第二个更新缓存脚本

    function updateCache() {
      var contents = "Here is new data 2";
      cacher.updateCache(contents);
    }
      

脚本#2、3和4都将#1用作库,保持开发模式以使用最新版本。我已经完成了两次测试,从头开始创建了脚本。 该测试的第一个实例,第二个更新脚本,#4,不会更新缓存。运行它的updateCache()函数,然后重新加载#2的Web应用程序,它应该显示“这里是新数据2”,但仅显示“新缓存”。

在测试的第二个实例中,#3和#4都成功更新了缓存。我无法一生找出为什么它在一种情况下失败而在另一种情况下失败的原因。有什么我想念的吗?

0 个答案:

没有答案