Je suis assez novice en matière de Shiny, donc je m'excuse si ma question est facile. J'ai essayé de vérifier sur google et stackoverflow mais je n'ai pas trouvé de réponse simple et utile jusqu'à présent. Quel est mon objectif/problème : Je suis en train de coder une page Shiny qui affiche un tableau avec des centaines de milliers de lignes. Les données proviennent de différentes bases de données, sont manipulées, nettoyées et affichées à tous les utilisateurs sur demande. Problème 1 : pour charger toutes les données, le script prend presque 5 minutes. Problème 2 : si à 8h00 l'utilisateur 1 demande ces données et à 8h05 l'utilisateur 2 demande les mêmes données, deux requêtes différentes sont lancées et deux espaces différents en mémoire sont utilisés pour afficher exactement les mêmes données à deux utilisateurs différents. La question est donc la suivante : dois-je utiliser un système de cache pour améliorer ce processus ? Si ce n'est pas le cas, que dois-je utiliser d'autre ? J'ai trouvé beaucoup de documentation officielle Shiny sur les parcelles de cache mais rien sur la mise en cache des données (et j'ai trouvé cela assez surprenant). Autre information utile : les données en cache doivent être supprimées tous les soirs vers 22h car de nouvelles données seront disponibles le lendemain / tôt le matin.
Code :
ui <- dashboardPage( # https://rstudio.github.io/shinydashboard/structure.html
title = "Dashboard",
dashboardHeader(title = "Angelo's Board"),
dashboardSidebar( # inside here everything that is displayed on the left hand side
includeCSS("www/styles.css"),
sidebarMenu(
menuItem('menu 1', tabName = "menu1", icon = icon("th"),
menuItem('Data 1', tabName = 'tab_data1'))
)),
dashboardBody(
tabItems(
tabItem(tabName = 'tab_data1')),
h3("Page with big table"),
fluidRow(dataTableOutput("main_table"))
))
server <- function(input, output, session) {
output$main_tabl <- renderDataTable({
df <- data.frame(names = c("Mark","George","Mary"), age = c(30,40,35))
})
}
cat("\nLaunching 'shinyApp' ....")
shinyApp(ui, server)
Ressources que j'ai utilisées pour rechercher une solution potentielle :
- Comment mettre en cache des données dans le serveur shiny ? mais apparemment je ne peux pas utiliser le paquet Jason Bryer
- https://shiny.rstudio.com/reference/shiny/1.2.0/memoryCache.html mais je n'ai aucune idée de la façon d'utiliser ce code appliqué à mon exemple
- https://shiny.rstudio.com/articles/plot-caching.html est principalement axé sur la mise en cache des parcelles
Toute aide serait très appréciée. Merci de votre compréhension.