There are some enhancements in product content wrapper JAVA class. We used these enhancements in our project and observed good change in website performance.
1. If content of product is empty string or null then method 'getProductContentAsText' is not caching the result.
And thus every time this method is making SQL call even no content in database. Method should cache the empty string and null as result.
2. Overloaded method 'getProductContentAsText' is also using cache method of Delegator for 'ProductConetnt' entity selection and passing 'true' to use cache for 'ContentWorker.renderContentAsText' method. This approach is making unnecessary copies of cache for content.
I Product content wrapper cache
II ProductContent entity cache
III Content, Dataresource, ElectrocText and etc... entities cache(ContentWorker.renderContentAsText)
If I again call the 'getProductContentAsText' method then this will return the result from product content wrapper cache. So there is no use of ProductContent, Content, Dataresource and ElectrocText cache. And these cache also filling the memory of application.
We also applied the same logic for category content wrapper. I am attaching the patch for trunk, please review.