如何提高 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 的性能? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章