我打算为PortletPreferences类编写一个静态类。自从每次我调用PortletPreferences.getValue()以来,我都会调用内部门户网站数据库来获取值。我调用PortletPreference.setValue()和PortletPreferences.store()将其保存在数据库中。每次更改首选项时,都会有一个数据库调用。我想优化代码的性能。我正在寻找帮助和建议,如何实现这一目标。

我有一个不确定的想法。我可以编写一个静态Map类来实现吗?如果我写错了,请更正我。谢谢 !

最佳答案

如果您打算让首选项本质上是“只读的”,并且对于每个用户都是相同的,则最好将它们一次加载到地图中一次,然后始终在内存中而不是通过API来访问它们。

但是,如果您计划更改Portlet首选项(不重新启动Portlet应用程序),或者如果允许用户为首选项设置自己的值,则应该小心。在这两种情况下,这些值都是动态的,可能应该每次都获取。您不希望有人更新首选项并且不希望它具有预期的影响。您也不希望一个用户使用另一个用户保存的首选项值。

在地图中存储偏好设置本质上是创建一个共享缓存,您必须手动更新该缓存,而不是让API进行更新。如果这样的缓存的含义可以满足您的要求,那么一定要这样做。

09-27 22:33