Fórumok

Page loading slow due to portlet

Samita Bhujbal, módosítva 10 év-val korábban

Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Junior Member Bejegyzések: 47 Csatlakozás dátuma: 2012.01.17. Legújabb bejegyzések
more details needed..
Samita Bhujbal, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
That portlet displays announcement from JournalArticle table based on organizations assigned to user.
thumbnail
Anil T, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Expert Bejegyzések: 313 Csatlakozás dátuma: 2012.01.14. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Expert Bejegyzések: 467 Csatlakozás dátuma: 2011.10.31. Legújabb bejegyzések
Hi,
Can you check if commenting the following line there is some performance improvement.
dynamicQuery.addOrder(OrderFactoryUtil.desc("createDate"));


Regards
Samita Bhujbal, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Thanks for reply. I will check this now.
Samita Bhujbal, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Sushil,
After commenting tht line , no change in performance.
thumbnail
Harish Kumar, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Expert Bejegyzések: 483 Csatlakozás dátuma: 2010.07.31. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Junior Member Bejegyzések: 31 Csatlakozás dátuma: 2012.07.05. Legújabb bejegyzések
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, módosítva 10 év-val korábban

RE: Page loading slow due to portlet

Regular Member Bejegyzések: 117 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
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, módosítva 9 év-val korábban

RE: Page loading slow due to portlet

New Member Bejegyzések: 24 Csatlakozás dátuma: 2012.09.04. Legújabb bejegyzések
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