如何提高 Spring MVC - Hibernate - JSP - AngularJS v1.6 的性能? [关闭]

Posted

技术标签:

【中文标题】如何提高 Spring MVC - Hibernate - JSP - AngularJS v1.6 的性能? [关闭]【英文标题】:How to increase performance in Spring MVC - Hibernate - JSP - AngularJS v1.6? [closed] 【发布时间】:2018-05-06 03:45:48 【问题描述】:

给我一​​些想法/建议/解决方案,以更快地检索数据和页面呈现速度。技术使用 Spring MVC - Hibernate - JSP - AngularJS v1.6 - SQL Server 数据库。从 SQL Server 检索数据,映射到 Hibernate 对象,在用户界面中渲染时出现延迟。 进入项目:我正在检索产品列表(产品名称、类别、子类别、评级、产品图像为 base64 格式以及更多计算细节)。

这篇文章的目的是在用户界面中渲染数据非常慢。有没有办法微调 Web 应用程序的性能。

DAO 层示例代码-产品检索-休眠:

Session session = sessionFactory.openSession(); // Open Session Factory connection
    Transaction tx = null; // Transaction
        try 
            tx = session.beginTransaction(); // Transaction Begin
            productMaster = sessionFactory.getCurrentSession()
                    .createSQLQuery(
                            "select field1,field2 from Table")
                    .addScalar("field1", StandardBasicTypes.STRING)
                    .addScalar("field2", StandardBasicTypes.BIG_INTEGER).list();
            for (Object[] o : productMaster) 
                map.put(o[0].toString(), Long.parseLong(o[1].toString()));
            
            session.getTransaction().commit(); // Transaction Commit once its successful
            session.flush(); // Execute all pending statement in DB
            session.clear();// Clearing the session object
         catch (HibernateException e) 
            if (tx != null) 
                tx.rollback();// Unsuccessfull transaction - rollback
            
            e.printStackTrace();
         finally 
            session.close(); // Closing the connection
        

【问题讨论】:

【参考方案1】:

没有更多细节,我只能提供一般性建议,但这里是:

首先分析应用程序以查看瓶颈的实际位置。有关分析工具的列表,请参阅 this question。

黄金法则是先测量,然后只优化需要优化的部分!

一旦您知道需要改进的地方,您可以尝试的一般方法是:

提高 Java 中算法/计算的效率。 缓存结果。 提高数据库查询的效率。考虑: 处理客户端响应需要多少查询? 是否可以重构查询以提高效率。 添加数据库级索引等是否可以提高查询性能。

从您使用的技术来看,您似乎正在开发某种交互式网络应用程序。考虑逐步加载和显示数据是否可行(例如,当用户查看第一个数据项时,在后台加载第二个数据项)。

这可能与直觉相反,但请考虑您的应用程序是否可以在没有大量客户端 javascript 框架的情况下实现为普通的旧 html 页面。在许多情况下,您会发现这会大大减少页面加载时间...

【讨论】:

非常感谢。我对你的回答有所了解。是的,你是对的。它是一个交互式网络应用程序。在 UI 中渲染数据非常慢。 所以关键问题是 - “应用程序的哪一部分正在减慢速度?”您可以尝试使用类似 curl 或 Python 脚本(查看 Requests)来测试您的服务器端代码以尝试隔离问题... 我观察到 UI 中的渲染出现延迟。

以上是关于如何提高 Spring MVC - Hibernate - JSP - AngularJS v1.6 的性能? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

手写 Spring 事务IOCDI 和 MVC

SpringBoot工程中Spring MVC模块的应用

Spring MVC方法参数注入

Spring MVC 的常用注解

Spring MVC 的常用注解

Spring MVC 的常用注解