Sobi Pro faster and easier
In our quest to make Joomla! sites faster, we often come across CCK (Content Creation Kits) that have been used way beyond their typical use-case. More recently, this also started applying to Joomla! custom fields.
Beyond means creating objects with 30+ custom fields (sometimes hundreds) with databases exceeding 100 records. The absolute worst case so far was a 130-field Sobipro site with hundreds of records, whose homepage rendered in over 15 seconds, and the custom pages in 3+ seconds, on a dedicated VPS with 16Gb RAM, 8 cores, and SSD-based disk. How was this possible? Simple: 1760 queries for the homepage!
This is one of the situations where no amount of configuration can produce a proper result. Sobi for example features several levels of cache, but even enabling all we were still way above 2 seconds rendering time. It simply wouldn't do. Similar situations with K2 and - to a smaller degree - DJ-classifieds and DJ-Catalog posed the same problem: how do you optimize code that simply wasn't meant for that? Especially when tons of users are already trained for the backend / frontend editing and management of the pages?
That's when we decided to extend GeoPush, a custom business locator we had written to support Angular/Ionic/Cordova apps back in 2013, which was perfectly optimized for cache and had a simple enough architecture to provide us with the perfect starting ground: both the default masonry view with infinite scrolling and its light fingerprint on the server performances made it an ideal candidate.
The issue was then to offset the slow queries to a job running after the user saved any changes for performance reasons; a complex query indeed, adding no longer than 200ms to the record post, and saving a JSON structure of the CCK data into our own geopush table.
This approach easily allowed us to go down to an average of 0.2s response time in the list view. Still the detail page was too slow, and - in Sobi - the XSLT framework made changes a bit more cumbersome than it needs to be. So we extended this approach to the individual business views, and developed a custom layout to display the JSON data.
So where is the catch? In order to achieve the exact layout required we had to develop a dedicated layout (a simple override, as usual). So no automatic one-click solution, rather a powerful tool to allow standard - Joomla approach coding. In layman's terms, you need a coder or a skilled webmaster to put this in production.
We do offer consultancy to get you up and running in the right direction.