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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...