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 ??
Due to that portlet , page loads slowely after user logges in . Is there any to improve performance ??
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.
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();
}
}
%>
<%
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();
}
}
%>
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.
Regards
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.
After commenting tht line , no change in performance.
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,
I believe if you refactor your code and closely analyse the point mentioned above your performance will surely improve.
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.
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
Thanks