分享自己写的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