Кому наверное как — может это и не проблема вовсе, но мне кэш создаёт неудобства.
Если коротко — то после обновления данных в источнике, в UI отображаются «старые» данные.
Проблема бородатая: https://stackoverflow.com/questions/37408072/r-shiny-app-shows-old-data
Собственно я решал её разными путями — добавлял кнопку принудительного обновления данных.
Обновлял Шайни сервер прямо из сессии, чтобы сбросить кэш через sudo systemctl restart shiny-server
Изменение даты app.R мне не помогает. Писал приложения с учётом этой проблемы.
Но сейчас дела обстоят так, что ни один из этих методов не подходит.
Собственно вопрос — знаете ли вы ещё какие-то методы обхода кэширования? Может есть какой-то «рубильник» на уровне настроек сервера..
#shiny #cache
Какая-то странная проблема. Мне казалось ,в mastering shiny было описано решение https://mastering-shiny.org/performance.html?q=ca#caching или у вас проблема в другом?
InvalidateLater ?
ShinyProxy
К Mastering Shiny тоже обращался, но bindCache() и описанные техники, это не про мой случай. В книге описано как благодаря кэшу, можно сэкономить вычисления. Мне же наоборот, не нужно кэшировать.
это же про развёртывание приложения, в развёрнутом образе будет всё та же проблема.
ну смотрите, там есть раздел 23.5.5 Cache scope Как я понял, ваш кэш просто не чистится, т.к. процесс запущен. м.б. в scope надо подкрутить? или таймаут поменьше выставить, чтобы процесс быстрее убивался
Нет, так как каждый раз новая среда - где нет памяти
в принципе как вариант, но тогда нужно в каждый отображаемый элемент или подготавиваемую таблицу вставлять. Выглядит как костыль, хочется более системное решение.
поставить фиктивную зависимость от одного реактивного элемента на который ставить Invalidate?
пока нет времени и ресурсов, менять способ деплоя. Но, я возьму на заметку, попробую на досуге.
https://chrome.google.com/webstore/detail/easy-auto-refresh/aabcgdmkeabbnleenpncegpcngjpnjkc?hl=ru ?
попробую с этим поиграться, позже отпишусь. Спасибо)
это я так понял кэш браузера скидывает, а надо кэш на сервере. Да и я каждому пользователю не поставлю это расширение)
ответ уже есть в шайни, пишите свой прокси: > shiny::reactiveFileReader function (intervalMillis, session, filePath, readFunc, ...) { filePath <- coerceToFunc(filePath) extraArgs <- list2(...) reactivePoll(intervalMillis, session, function() { path <- filePath() info <- file.info(path) return(paste(path, info$mtime, info$size)) }, function() { do.call(readFunc, c(filePath(), extraArgs)) }) } <bytecode: 0x55877ed79290> <environment: namespace:shiny>
Обсуждают сегодня