Fórum

Page loading slow due to portlet

Samita Bhujbal, modificado 10 Anos atrás.

Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
We have one portlet on homepage on production site.
Due to that portlet , page loads slowely after user logges in . Is there any to improve performance ??
thumbnail
Murali Krishna, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Junior Member Postagens: 47 Data de Entrada: 17/01/12 Postagens Recentes
more details needed..
Samita Bhujbal, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
That portlet displays announcement from JournalArticle table based on organizations assigned to user.
thumbnail
Anil T, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Expert Postagens: 313 Data de Entrada: 14/01/12 Postagens Recentes
The code written for fetching organizations and announcements might be taking some time. Could you attach your code so we can check which one taking more time for execution.
Samita Bhujbal, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
Check below code :-

<%

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String Curr = dateFormat.format(cal.getTime());
Date CurrentDate = (Date)dateFormat.parse(Curr);
System.out.println(CurrentDate);



User userl = themeDisplay.getRealUser();
long userId = userl.getUserId();
if (!(userId == 10158)) {
long structureid = 0;
String portlettitle = "";
List<JournalArticle> jalist1 = null;
List<JournalArticle> jalist = null;
Set s = new HashSet();
Set q = new HashSet();
List<UserGroup> grupids = UserGroupLocalServiceUtil
.getUserUserGroups(userId);
department getcomptitle = null;
for (UserGroup org : grupids) {
List<department> deptobj = departmentLocalServiceUtil
.findBydeptgroupname(org.getName());
for (department dpt : deptobj) {
s.add(dpt.getOrgsstructureid());
}
}
%>
<%
try {

List<Organization> orgList = OrganizationLocalServiceUtil
.getUserOrganizations(userId);
//.getOrganizations(0, 100); // getUserOrganizations(userId) ; //getOrganizations(0, 100);//(userId);
if (!orgList.isEmpty()) {
for (Organization org : orgList) {
List<department> deptobja = departmentLocalServiceUtil
.findByorgname(org.getName());
if (!(deptobja.isEmpty())) {
String temp1 = Long.toString(deptobja.get(0)
.getDeptgroupid());
q.add(temp1);
}
}
}
} catch (Exception e) {
System.out.println("=========== 1" + e);
}
%>
<%
for (Object value : s) {


DynamicQuery subQuery = DynamicQueryFactoryUtil
.forClass(JournalArticle.class, "articleSub",
PortalClassLoaderUtil.getClassLoader())
.add(PropertyFactoryUtil.forName("articleId")
.eqProperty("articleParent.articleId"))
.setProjection(ProjectionFactoryUtil.max("id"));

DynamicQuery dynamicQuery = DynamicQueryFactoryUtil
.forClass(JournalArticle.class, "articleParent",
PortalClassLoaderUtil.getClassLoader());
dynamicQuery.add(PropertyFactoryUtil.forName("id").eq(
subQuery));
dynamicQuery.add(PropertyFactoryUtil.forName("structureId")
.eq(value.toString()));
dynamicQuery.add(PropertyFactoryUtil.forName("status").eq(0));
dynamicQuery.add(PropertyFactoryUtil.forName("displayDate").le(CurrentDate));

dynamicQuery.addOrder(OrderFactoryUtil.desc("createDate"));
getcomptitle = departmentLocalServiceUtil
.findByorgsstructureid(Long.parseLong(value
.toString()));

%>
<div class="dept-main">
<div class="dept-header-title">
<span class="dept-header-icon"></span> <span class="dept-title-text"><%=getcomptitle.getOrgsisplayname()%></span>
</div>
<%
try {
jalist = JournalArticleLocalServiceUtil
.dynamicQuery(dynamicQuery);

int i = 1;
for (JournalArticle displayarticle : jalist) {
boolean d2 = UiHelper.getnewbuttion(displayarticle);
String pvl = String.valueOf(displayarticle
.getPrimaryKey());
i++;



%>
<div class="dept-container">
<span class="dept-arrow-icon"></span> <span class="dept-text">
<a
href="<portlet:actionURL name="viewArticle"><portlet:param name="name" value="<%=pvl%>"/>
<portlet:param name="org" value="<%=value.toString()%>"/><portlet:param name="loop" value="one"/>
</portlet:actionURL>"><%=UiHelper.gettitle1(displayarticle, true)%>
</a> <!-- <a href="#">Read More</a> --> <%
if (d2) {
%>
<div class="dept-new-entriesc"></div> <%
}
%>
</span>
</div>
<%
if (i == 3) {
break;
}
}
} catch (Exception e) {
System.out.println("=========== 2" + e);
e.printStackTrace();
}
}
%>
thumbnail
sushil patidar, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Expert Postagens: 467 Data de Entrada: 31/10/11 Postagens Recentes
Hi,
Can you check if commenting the following line there is some performance improvement.
dynamicQuery.addOrder(OrderFactoryUtil.desc("createDate"));


Regards
Samita Bhujbal, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
Thanks for reply. I will check this now.
Samita Bhujbal, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
Sushil,
After commenting tht line , no change in performance.
thumbnail
Harish Kumar, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Expert Postagens: 483 Data de Entrada: 31/07/10 Postagens Recentes
Looks like performance issue is due to Dynamic Query as its not cached. I can see you are creating dynamic query in for loop. Replacing the dynamic query with Custom query may help you here.
Pritesh Shah, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Junior Member Postagens: 31 Data de Entrada: 05/07/12 Postagens Recentes
First of all dynamic query would be slow as its not cached.

From your code, below are the thing I make out,
  • You have queried for UserOrganization and prepared set named as "q" which is not used after preparing it. So if you don't need that why are querying it and then iterating result set to prepare set "q"
  • You prepared set "s" of orgStructureId by iterating departments and then again you are iterating set "s" to preparing dynamicquery and get Orgsisplayname. Why can't you prepare dynamic query in first of loop of department and you have department object so no need to query again to Orgsisplayname. This will save your two for loop iterations.
  • If your requirement can be satisfied by using IN clause on "structureId" use that, instead of firing one query for each structureId. This will save lot of operation on DB end.
  • As as best practice have your JAVA code written in your controller on server side and pass the attributes to JSP and use AUI or JSTL for iterating or accessing the variables.


I believe if you refactor your code and closely analyse the point mentioned above your performance will surely improve.
Samita Bhujbal, modificado 10 Anos atrás.

RE: Page loading slow due to portlet

Regular Member Postagens: 117 Data de Entrada: 05/07/11 Postagens Recentes
Thanks for reply Pritesh.
Actually this code is developed by other developer which is not available now. I don't know in detail about code. Hence I don't want to go through it. May be it can affect functionality.

I just wanted to know how loading of this portlet can be delayed by some time interval after loading all other portlets in page. So that atleast full hompage gets loaded early except this.
Suyash Bhalekar, modificado 9 Anos atrás.

RE: Page loading slow due to portlet

New Member Postagens: 24 Data de Entrada: 04/09/12 Postagens Recentes
For this you can use render weight concept of Liferay. Set render weight of your portlet to high value as compared to other portlets on the page.
Thanks