R:在已部署的 ShinyApp 中仅加载一次 .RData

Posted

技术标签:

【中文标题】R:在已部署的 ShinyApp 中仅加载一次 .RData【英文标题】:R : Load only once a .RData in a deployed ShinyApp 【发布时间】:2015-10-11 23:48:11 【问题描述】:

我需要使用Shiny Server 部署一个 ShinyApp。要运行,我的应用程序需要来自 .RData 文件(~300 Mo)的数据。这个.RData 文件加载了位于global.R 文件中的load(...) 语句。 电脑功能,加载可能需要几分钟,对用户不友好。

我们怎样做才能使.RDate文件只加载一次,这样每个新用户就不需要重新加载.RData文件?

谢谢。

【问题讨论】:

【参考方案1】:

如果您在global.R 中加载对象,则只需加载一次。第一个之后的每个用户都应该可以快速访问您的应用程序。

如果你在本地开发你的应用,你可以通过以下方式测试我所说的。例如,启动您的应用程序,

 runApp(port=5050)

只是为了设置端口。您需要一些时间让您的浏览器显示该应用程序。加载后,记下你的应用的地址(应该是127.0.0.1:5050),关闭应用的浏览器标签(但不要停止R!),打开一个新标签并将上述地址放在地址栏中。现在,访问您的应用应该非常快。

这只是说只要闪亮启动并运行,global.R 中的命令就会在开始时执行,并将它们的评估放在 R 全局环境中。它们不会在用户连接到应用程序时执行。

还请考虑,如果使用 compress=FALSE 参数保存 Rdata,则可以加快加载速度。这样,您的文件会更大,但加载会更快。

【讨论】:

帮了大忙!我尝试了基于runApp(port=5050)的经验,效果很好!这可能很明显,但session$onSessionEnded(function() stopApp()) 一定不能在server.R 中,这样它才能工作....也感谢compress = FALSE:非常有用。

以上是关于R:在已部署的 ShinyApp 中仅加载一次 .RData的主要内容,如果未能解决你的问题,请参考以下文章

如何限制部署后脚本在 Visual Studio 数据库项目中仅运行一次

在 https 模式下运行 shinyapp

shinyApp 中的模块无法被 app.R 识别

带有ui和服务器的shinyApp在单独的文件中?

无法部署 ShinyApp:readTableHeader 在“raw”上找到不完整的最后一行(使用默认值:en_US)

如何在 ScrollVIew 中仅加载可见子视图