R Shiny应用程序显示旧数据

时间:2016-05-24 08:22:53

标签: shiny

我有闪亮的应用程序,它显示旧数据(延迟4天!)虽然服务器数据已刷新(当天)。

服务器上不存在旧数据集的奇怪之处 - 似乎只存在于Shiny缓存中。

在服务器上,我有5月18日由cron完成的1个数据集,以及5月24日手动刷新完成的1个数据集。但应用程序中的数据是从5月20日开始的!在报告中,我显示了数据集创建时间的日期 - 这就是我知道数据不再存在的原因。

以某种方式重置Shiny缓存是否可行?

对于其他一些报道,我也有类似的问题。有些报道发生的事情有些奇怪,有些报道却没有......

3 个答案:

答案 0 :(得分:1)

我已经在这个问题上苦苦挣扎了很长时间了,以为我已经尝试了所有方法,包括在闪亮的侧边栏上放置一个js按钮以手动刷新(不幸的是,这也不起作用)。对我有用的有两件事:

  1. 确保所有用于从文件读取数据的代码均不在名称为global

  2. 之外的代码块中
  3. 上传新数据后手动重新启动闪亮的服务器

显然,第一个更易于管理,这是我希望在几周前开始使用变通办法时就已经知道的解决方案。

答案 1 :(得分:0)

我发现,更改“ app.R”文件的创建日期时,R Shiny服务器的缓存已更新。

所以,这是我使用的技巧:

server <- function(input, output, session) {

   # Trick file date creation update
   onStop(function() {

     # File name
     p <- paste0(getwd(), "/app.R")

     # Update file 'date creation'
     Sys.setFileTime(p, now())

  }) # onStop

 ...


} # server

该想法是在每个会话之后更新“ app.R”的创建日期。

答案 2 :(得分:0)

这是一个古老的问题,但是,如果有人遇到这个问题并且在这里偶然发现了这个问题,那么答案将深深地嵌入在shiny development的已解决问题中。

解决方案

您的UI可能不是功能,因此出于性能原因,Shiny会将其缓存。如果您不希望缓存,只需将其设置为一个函数即可(但是,这确实意味着您将失去UI缓存的性能优势)。

打开它:

ui <- fluidPage(...)

对此:

ui <- function(req) {
  fluidPage(...)
}