如何解决vaadin加载MYSQL DB时UI缓慢
我有一个使用内存DB的客户端vaadin应用程序,并且添加了切换到mysql的可能性。我将后端用作API。所有使用这些mysql方法而不是内存DB的操作在客户端都要花费很多时间(每次至少30s),但是在mysql方面仍然是瞬时的。
public SingletonGraph updateGraph (boolean isMySQL){
g = null;
if (isMySQL) {
fixGraphData(new MySQLGraph(connection));
g.setMysql(true);
} else {
fixGraphDataMem(new MemGraph());
g.setMysql(false);
}
return g;
}
private synchronized static void fixGraphData(Graph graph) {
try {
g = new SingletonGraph(new PAP(
new GraphAdmin(graph),new ProhibitionsAdmin(new MySQLProhibitions(connection)),new ObligationsAdmin(new MemObligations())
));
System.out.println("MySQLGraph");
superContext = null;
activePCs = new HashSet<>();
for (Node n : graph.getNodes()) {
if (n.getProperties().get("namespace") != null && n.getProperties().get("namespace").equals("super")) {
switch (n.getType()) {
case OA:
System.out.println("Super OA: " + n.getName());
superOAId = n.getName();
break;
case UA:
if (n.getName().equals("super_ua2")) {
System.out.println("Super UA: " + n.getName());
superUAId = n.getName();
}
break;
case U:
System.out.println("Super U: " + n.getName());
superContext = new UserContext(n.getName(),rand.toString());
break;
case PC:
System.out.println("Super PC: " + n.getName());
superPCId = n.getName();
break;
}
}
if (n.getType().equals(NodeType.PC)) {
activePCs.add(new PolicyClassWithActive(n));
}
}
OperationSet resourceOps = new OperationSet();
resourceOps.add(Operations.READ);
resourceOps.add(Operations.WRITE);
resourceOps.add(Operations.OBJECT_ACCESS);
getPDP().setResourceOps(resourceOps);
} catch (PMException e) {
e.printStackTrace();
}
}
我读到Vaadin上的一个常见问题是,使用mysql会以某种方式减慢UI速度,并且某些vaadin方法有利于延迟加载,但是即使使用那些特定方法,我也不知道如何优化客户端。有人尝试过吗?如何优化它?
谢谢。
Ps:我使用同步静态,因为我只希望项目中有一个图形实例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。