Details
-
Feature Request
-
Status: Reviewed
-
Minor
-
Resolution: Already in the Product
-
None
-
None
-
None
Description
This issue is a followup to LPS-168591, where the worst problem was resolved. When webcontent portlets are embedded in pages and the content of these webcontents contains links to pages, the performance of "Review Changes" was extremely poor.
The fix in LPS-168591 improved the performance a lot by skipping PortletPreferences, even with the fix the generated CTClosure object still contains a lot of unnecessary references. Please see there for a description how to replicate our setup.
I have used a little script to generate a CTClosure object. The ID in the example is from a new Publication where one page was added. Nothing else was done.
import com.liferay.portal.template.*; ctClosureFactory = ServiceLocator.getInstance().findService('com.liferay.change.tracking.closure.CTClosureFactory'); closure = ctClosureFactory.create(1101); out.println(closure);
Result:
1,5 Million lines before LPS-168591
140.000 lines after LPS-168591
But on a fresh system this object contains usually less than 100 lines. Please find attached the output of the above script with 140.000 lines + an export of the className table to match the ids in the result. Obviously, there are a lot of improvements possible here.
I am pretty sure that
a) Some more classNames can be skipped (or maybe the other way: Include only relevant classNames)
b) Another idea I had was to just include each entry in the result only once. e.g.