【发布时间】:2016-07-01 19:31:41
【问题描述】:
我正在使用 R 在 Web 上部署应用程序,但我的应用程序从中获取数据的 URL 是我的应用程序需要时间的地方。是否可以缓存该数据? 我尝试安装 memoise、R.cache 和其他一些服务器不支持的软件包。
【问题讨论】:
标签: r shiny-server shiny
我正在使用 R 在 Web 上部署应用程序,但我的应用程序从中获取数据的 URL 是我的应用程序需要时间的地方。是否可以缓存该数据? 我尝试安装 memoise、R.cache 和其他一些服务器不支持的软件包。
【问题讨论】:
标签: r shiny-server shiny
我建议尝试 Jason Bryer 的 DataCache 软件包。该软件包可通过 GitHub 获得,我今天成功地将它用于我正在开发的 Shiny 应用程序。
该包的主要功能是data.cache。您将需要定义一个函数来生成要缓存的对象列表,然后将您定义的函数作为参数传递给data.cache。如果您打算在应用程序中缓存多个对象列表,我还建议您设置 data.cache 的 cache.name 参数。
例如:
DataCache::data.cache(
function(){
list(
normal_random_numbers = rnorm(10),
uniform_random_numbers = runif(10)
)
},
cache.name = 'my_random_numbers'
)
上面的代码在本地环境中创建了两个对象normal_random_numbers和uniform_random_numbers,并将它们缓存到文件系统中。当您再次运行此代码时,这些对象的缓存副本将被使用而不是重新生成 - 当然,除非缓存过期。 data.cache的frequency参数用于设置缓存的过期时间,默认设置为daily。
如果您在 Windows 下运行应用程序,则使用包的this slightly modified version。这是为了解决---一个显然是由于缓存文件名与 Windows 文件系统不兼容的错误。
【讨论】: