In this blog entry I will outline best practices to achieve a good performance with Portal 8.x (modular) themes.
In case an older theme is used check out the article here: https://www-10.lotus.com/ldd/portalwiki.nsf/dx/Optimizing_Portal_7_Page_Builder_Theme_for_performance
The performance of the page rendering is affected both by the execution on the server as well as downloading the resources referenced by the theme and their cachability. The Portal tuning guide outlines which parameters to configure to achieve good cache headers so that the browser will not keep on downloading the same static resource and also how to enable http caching to prevent Portal from having to deliver the static resources.
Server side processing:
- Disable JSP reloading for the theme.
- If the Default.jsp was adjusted to have a constant reload of the theme.html files via the parameter <r:param name="max-age" value="2"/> remove it for Production and Performance Test environments.
- Limit the amount of dynamic content spots. Remove default content spots that are not needed. If including JSP fragments or initialization logic note that each JSP will execute that logic if including it.
- Check how long the dynamic content spots (JSPs) take via adding timer code and try to optimize the slowest dynamic content spots by adding caching via Dynacache or local Maps.
- Try to avoid anonymous sessions in the theme.
- Disable cache propagation of theme events via adding the following parameters to the WP CacheManagerService:
In the WebSphere Integrated Solutions Console Resources → Resource Environment → Resource Environment Providers → WP CacheManagerService → Custom properties
- If calling WCM try to ensure WCM caching is enabled.
- Investigate if the Navigation can be cached across users.
Client Side Processing:
- Like any other web page on the client browser side the number of files referenced by the html as well as their size impacts the performance.
- Implement the classic web server tuning - compression, cache headers, http caching.
- Limit the resources referenced by the theme that are not aggregated (meaning not part of the profile).
- Leverage either the profile_deferred or profile_lightweight profiles as a starting point for your profiles. Try to avoid adding a vast set of files to the modules referenced by your profile. Remove sample or default modules where possible.
- If using a larger amount of images try to sprite them.