Slow nearly empty Skuid page testing

We have a Skuid Account record page that is consistently taking around 10 seconds to load for our users. It’s probably the most heavily used of our Skuid pages so it’s upsetting people.

There are lots of models on the page. And I’ve done my best to optimize it by ensuring most of the child records aren’t loaded unless the child record tab is clicked, using page includes were I can etc.

I’ve created a clone of the page, and have been stripping back it’s components, javascript, css, removing fields from models, and ensuring only the Account model is loaded on page load. Yet still the page is taking 6-8 seconds to finishing loading.

I’ve had a look at this document https://docs.skuid.com/latest/en/skuid/best-practices/skuid-page-performance-guide.html?_ga=2.20536316.515568750.1562761927-75400173.1544613440 and am not really sure what else I can do to improve performance.

Moreover I’m curious that by tinkering with everything that I have done already, i’ve only shaved at best 4 seconds off the load time.

Is anyone with a keen eye able to check out my page it would be greatly appreciated, as I’d like to be able to go back to our users and firmly say I’ve done everything possible to make the pages as efficient as possible

Administration - strategic lead Education/L&T - strategic lead Estates and facilities - strategic lead Finance - strategic lead International - strategic lead Library/LRC - strategic lead Organisational - strategic lead Nominated strategic contact Research - strategic lead Technology - strategic lead Security - Strategic Lead Jisc Subscription Budget Holder Administration - strategic lead Education/L&T - strategic lead Estates and facilities - strategic lead Finance - strategic lead International - strategic lead Library/LRC - strategic lead Organisational - strategic lead Nominated strategic contact Research - strategic lead Technology - strategic lead

Glenn, first thing i’d try is to make the Attachment and the ProcessInstance models both be client-side loaded — go to the Models’ Advanced properties and select “Process Model client-side”. Then, you can go back to the main Model properties and also select “Allow Page Render Before Query Completes” on this Model, which you should do as well.

Ordinarily Skuid will fetch all metadata for Models on initial page load, and in your case I think that the Model metadata, not data, is causing your page to load so slowly. By forcing Skuid to process the models with the most metadata client-side, and allowing the page to render before it finishes processing metadata for these models, you should see a speed-up.

One way that you can check which Models are the worst in terms of time taken to load metadata is to run this snippet from the JavaScript console, after the page loads:

var mList = skuid.model.list().map(function(m) { var l = function(x) { return x ? JSON.stringify(x).length : 0; }, f = l(m.fields); return { size: f, id: m.id }; }); mList = mList.sort(function(a,b) { return b.size - a.size; }); mList.map(function(m) { console.log(“(” + m.id + ") " + m.size); return m; });

Whichever Models are at the top of the list are the ones taking the longest to load in terms of metadata processing. I would try to make these models processed-client-side and select “Allow Page Render Before Query Completes” on those.

Hey Glenn,

Did this up helping the page load time? I’ve had issues with page load times in the past and would like to know how this helped.

Where is this “Allow Page Render Before Query Completes” option located?

See the description above — in V1 pages on Skuid-on-Salesforce, you have to first enable the “Process model client-side” option in the Advanced properties of a Model, THEN the “Allow Page Render Before Query Completes” option is available on the Basic properties. It’s not intuitive, I know.

Yup. I wasn’t intuitive at all because I stopped reading right here and was stumped again until I came and read the rest of the sentence.


I assume the option will be moved to the Advanced tab soon.

Thanks very much for all your help, it’s greatly appreciated. Especially the javascript snippet showing the more heavyweight models!

I hadn’t mentioned that I am using a master page where I have enabled page caching. So every model in the page i sent you is actually being processed client side, not server side as you thought.

I don’t have a great understanding of page caching, so when i enabled it initially we had problems where users would flick between two records using the “Recent Items” pull out and say update record 1, then go to record 2, update record 2. Then go back to record 1, and not see the update unless they manually refreshed the screen.

Note that there are these problems with the main record, not any of the child records. And the main record condition is “Account record where Id is the Id page parameters”. Have you any idea how i prevent the problem with updates not showing on the main record if flicking between records?

Also worth noting that I don’t see the option to “Allow Page Render Before Query Completes” on the child page, this option is only displayed on the master page. Below is my master page.

<p style="text-align: center;"><span style="font-size:18px;"><strong><span style="background-color:#ffff00;">Sandbox</span></strong></span></p> NewEvent NewEvent

any other ideas on how I can speed up my pages based on what I’ve said below?

Glenn, could we do a Zoom meeting to discuss this in more depth? I’d love to help walk through this with you but I think it would be more helpful to talk through these things on a Zoom and then record our findings here for posterity.

Hi Zach, when are you free? I’ve added you on Linkedin, so drop me a line when you are available for a chat.