Dash 客户端回调与 dcc.store

Dash client-side callback vs dcc.store

我已将 dash 应用程序连接到 AWS RDS。我有一个实时更新的图表,它触发回调 n_interval 5 分钟以查询数据库并进行一些昂贵的格式化。我将转换后的数据(~500 个数据点)存储在 dcc.store 中,另外 6 个图表和一个数据表从中使用这些数据(不需要进一步处理。我的问题是:为了进一步提高仪表板的效率,我应该利用客户端回调而不是 dcc.store?因为从我读过的内容来看,客户端只使用客户端浏览器,不需要在回调时返回到 dash 服务器?谢谢。(我是偷偷希望它没什么区别,因为我不想学习 javascript)

答案在很大程度上取决于您的体系结构、图表的复杂程度以及当前使用的服务器端回调的数量。

您已经提到了客户端回调的主要优势:由于数据在客户端,因此通过直接在客户端更新组件可以节省一些时间和网络。主要的不便之处在于这些是同步计算,会阻塞应用程序主线程(dash 目前不支持 promises 和异步),如果这些函数花费太多时间,可能会导致糟糕的用户体验。

对于非常简单的绘图和 table,我可以保证使用客户端回调会有显着改进,特别是因为它避免了 Plotly API,它可能比仅仅定义一个慢得多JSON 带有痕迹和布局的对象。