清除缓存以使用rdrop2读取最后一个数据文件

时间:2019-06-18 08:23:53

标签: r caching shinyapps read-data

我构建了一个带有表单的Shinyapp,每次用户在填写表单后按“有效”按钮时,都会在数据框中创建新行(并在另一个选项卡中显示)。创建新行时,我使用rdrop2将data.frame保存在我的保管箱中的.RDS文件中。然后,在每个会话开始时,我通过调用以下函数上传包含所有先前记录的数据文件:

drop_read_rds <- function(file, output_dir, dest = tempdir(), 
                          dtoken = get_dropbox_token(), ...) {
  localfile = paste0(dest, "/", basename(file))
  drop_download(paste(output_dir, file, sep = '/'), local_path = localfile, overwrite = TRUE, dtoken = dtoken)
  readRDS(localfile, ...)
}

创建新行后,我可以在文件浏览器中看到.RDS文件已被修改。但是,当我刷新应用程序或重新启动它时,Global.R文件中的drop_read_rds调用会加载旧的数据文件。此问题仅出现在shinyapp.io上的应用程序中,但是当我在本地运行时,一切都正确刷新。

因此,尽管如此,我的浏览器中的某些缓存在给定时间内保存了旧数据文件,因此不读取该数据文件的最新版本。为了验证这个假设,我首先等待了一个晚上(今天晚上),并且今天早晨加载了我的数据文件的最新版本。我还使用ccleaner清除了浏览器缓存,并且在执行此操作后也可以使用,这加强了我对缓存问题的假设。

我对诊断正确吗?是否有解决方案可以强制应用程序加载最后一个数据文件或自动清除缓存?

先谢谢您

0 个答案:

没有答案