[分享] R shiny web app 一些经验杂谈

楼主: cywhale (cywhale)   2018-01-11 14:27:20
分享自己写的shiny app 主题是海洋浮游动物的生态数据库查询
在这就不介绍生态上的议题,主要分享技术上心得可供参考
http://bio.odb.ntu.edu.tw/query/
资料连结部分...
shiny-server 和 PostgresSQL数据库可架在不同server,在UI 完成筛选条件后,
抓资料的function写成内部使用的package,经由Opencpu API 去抓使用者要的资料,
抓完即断掉和数据库连结。 Opencpu API作法参考
https://www.opencpu.org/posts/scoring-engine/
Opencpu server可在Apache 和 Nginx屏蔽成内网使用。用此做法在shiny-server
session中,不需要持续和数据库保持连结。
Async...
另一个好处是预先要抓的资料,可以丢进 future::future() (以及其他读外部档等工作)
让shiny-server继续完成其他UI要做的事,等到需要render资料时才用future::value()
叫用出来。这样减少一些lag..
顺提,前日在Hadley twitter读到他介绍 RPostgres 相对于RPostgresql这个
目前使用的package的优势,包括会自动清除佚失的连结,与query速度较快。之后应该会
改用看看~~ https://github.com/r-dbi/RPostgres
Loading...
网页一开始会慢的一部分原因都在挂载的javascript and css,这在nginx中若设
js | css 的cache, 网站都会出错。但可以把这些倚赖的资源放在CDN上,
参考做法:https://goo.gl/fum9Ji
可以看到重复连结网站时,挂载在CDN上的resource都是取用被cache的,速度就会提升。
其实遇到很多问题,都靠孤狗大神一个个解决。我列了我使用到的package在这,其他有
机会再续谈。
http://bio.odb.ntu.edu.tw/index_tech_citations.html
以上做法可能都有其他更好、更快的方式,目前这样做仅供参考,也欢迎讨论。
(如果您有使用此网站,使用经验上好或不好的地方,或有其他细节要联络,
敬请告知或透过网页上email联络。)
[关键字]: Shiny-server, API, Database
作者: Wush978 (拒看低质媒体)   2018-01-11 21:46:00
推,但是我建议使用shiny的时候,就不要太在意效能了 XD只要可以接受就好。真的要让网站很顺,换语言就对了
作者: Edster (Edster)   2018-01-11 22:33:00
推推.
楼主: cywhale (cywhale)   2018-01-11 22:54:00
其实也就只是试看看自己较常用的R可以做到什么地步:p^^
作者: shiang927   2018-01-12 07:20:00
感谢分享
作者: sulaxd (SulaXD)   2018-01-12 08:40:00
作者: raydai (Ray)   2018-01-15 21:10:00
谢谢分享.
作者: wenbuneatble (文本能吃吗)   2018-02-01 01:27:00

Links booklink

Contact Us: admin [ a t ] ucptt.com