Slow loading times for Models

Hello,
Looking for help/ideas of how I can make my pages more performant.

I have read: Page Performance Guide — Skuid v15.0.12 Documentation and attempted to tweak many things to no avail.

I have identified that my pages do have some unnecessary models but they contribute very little to my performance issue - nonetheless will look to remove them.

I have identified models load slower via action sequence or js using model.updateData(), instead of ‘Query on Page Load’, therefore I will try to adjust that where possible.

I have identified automatic filters are better given that the source model is queried when the filter is selected instead of page load. Though, I’m unable to make this adjustment due to auto filters lacking a lot of functionality and sometimes bugs out.

I have identified that Rest models are slower than regular Models since they seem to make an additional call (unsure why). Though, this is not relevant for most of our pages.

Finally, I identified that components don’t really contribute to load times, except chart maybe.

Nonetheless, I would appreciate any suggestions from the community or skuid.

I have also attached a sample page with some skuid models, the average load time is 800ms for the models (not the page), this is faster than my pages with similar amount of models but less data. I assume one reason is that most models are for the same object so SF is able cash data, though I think there is more to it.

Also requerying models takes 200ms~ instead of 50ms~ as implied in the article.

And, I would appreciate if Skuid can confirm that the load times are within their expectations.

<skuid__page unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" showheader="true">
	<models>
		<model id="Page" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
				<field id="skuid__API_Version__c"/>
			</fields>
			<conditions/>
			<actions/>
		</model>
		<model id="PageFilter" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="skuid__API_Version__c"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="Page1" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="fieldvalue" value="v1" enclosevalueinquotes="true" field="skuid__API_Version__c"/>
			</conditions>
			<actions/>
		</model>
		<model id="Page2" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="fieldvalue" value="v2" enclosevalueinquotes="true" field="skuid__API_Version__c"/>
			</conditions>
			<actions/>
		</model>
		<model id="Page3" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions/>
			<actions/>
		</model>
		<model id="Page4" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions/>
			<actions/>
		</model>
		<model id="Page5" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions/>
			<actions/>
		</model>
		<model id="PageFilter1" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageFilter2" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageFilter3" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageFilter4" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageFilter5" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page__c">
			<fields>
				<field id="Name"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" clientorserver="server" state="filterableon" inactive="false" name="Id" operator="in" enclosevalueinquotes="true">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageVersion" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page_Version__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="fieldvalue" value="v2" enclosevalueinquotes="true" field="skuid__API_Version__c" operator="="/>
			</conditions>
			<actions/>
		</model>
		<model id="PageVersionFilter" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page_Version__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" operator="in" enclosevalueinquotes="true" clientorserver="server" state="filterableon" inactive="false" name="Id">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageInteraction" limit="" query="true" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page_Interaction__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions/>
			<actions/>
		</model>
		<model id="PageInteractionFilter" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page_Interaction__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="multiple" value="" field="Id" operator="in" enclosevalueinquotes="true" clientorserver="server" state="filterableon" inactive="false" name="Id">
					<values>
						<value/>
					</values>
				</condition>
			</conditions>
			<actions/>
		</model>
		<model id="PageVersionDependent" limit="" query="false" createrowifnonefound="false" datasource="salesforce" sobject="skuid__Page_Version__c">
			<fields>
				<field id="Name"/>
				<field id="Id"/>
			</fields>
			<conditions>
				<condition type="fieldvalue" value="v2" enclosevalueinquotes="true" field="skuid__API_Version__c" operator="="/>
				<condition type="modelmerge" value="" field="skuid__Page__c" fieldtargetobjects="skuid__Page__c" operator="=" model="Page" enclosevalueinquotes="true" mergefield="Id" novaluebehavior="deactivate"/>
			</conditions>
			<actions/>
		</model>
	</models>
	<components>
		<skuid__text contents="Test page to check model load times. Feel free to delete components, js and Action Sequences." uniqueid="sk-25JB-18152"/>
		<skuid__grid uniqueid="sk-20AZ-10868" flexDirection="row" justifyContent="flex-start" alignItems="flex-start">
			<divisions>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter" uniqueid="sk-20AX-10284" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20Ad-12664" type="multiselect" conditionSource="manual" filterMethod="server" labelMode="manual" label="Page" rememberInPersonalization="false" conditionName="Id">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter1" uniqueid="sk-20JV-22753" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20JV-22754" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="Page" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page1" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter2" uniqueid="sk-20JW-24658" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20JW-24659" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="Page" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page2" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter3" uniqueid="sk-20JW-24183" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20JW-24184" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="Page" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page3" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter4" uniqueid="sk-20JW-23735" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20JW-23736" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="Page" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page4" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
									<positioning/>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageFilter5" uniqueid="sk-20JW-23289" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20JW-23290" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="Page" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="Page5" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageVersionFilter" uniqueid="sk-20OK-66480" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20OK-66481" type="select" conditionSource="manual" filterMethod="server" labelMode="manual" conditionName="Id" label="PageVersion" rememberInPersonalization="false">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="PageVersion" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
				<division alignSelf="auto">
					<components>
						<skuid__filterSet model="PageVersionFilter" uniqueid="sk-20Om-80401" resetButtonBehavior="hide">
							<filters>
								<skuid__filter uniqueId="sk-20Om-80402" type="multiselect" conditionSource="manual" filterMethod="server" labelMode="manual" label="PageInteraction" rememberInPersonalization="false" conditionName="Id">
									<sources>
										<source type="model" effectsbehavior="justdefault" model="PageInteraction" labeltemplate="{{{Name}}}" valuetemplate="{{Id}}"/>
									</sources>
								</skuid__filter>
							</filters>
							<filtering enableSearch="false" instantSearch="false" instantFilters="true"/>
							<sorting enable="false"/>
						</skuid__filterSet>
					</components>
				</division>
			</divisions>
		</skuid__grid>
		<skuid__grid uniqueid="sk-20QC-85992" flexDirection="row" justifyContent="flex-start" alignItems="flex-start">
			<divisions>
				<division minWidth="100px" ratio="1" alignSelf="auto">
					<components>
						<skuid__text contents="Selected" uniqueid="sk-20QF-88739"/>
						<skuid__chart model="PageFilter" maintitle="{{Model.labelPlural}}" type="pie" uniqueid="sk-20QE-88002">
							<dataaxes>
								<axis id="axis1"/>
							</dataaxes>
							<categoryaxes>
								<axis id="categories" categorytype="field"/>
							</categoryaxes>
							<serieslist>
								<series valuefield="Name" splittype="field" aggfunction="count" splitfield="skuid__API_Version__c"/>
							</serieslist>
							<colors/>
							<legend layout="horizontal" halign="center" valign="bottom"/>
							<styles>
								<spacing/>
							</styles>
						</skuid__chart>
					</components>
				</division>
				<division alignSelf="auto" minWidth="100px" ratio="1">
					<components>
						<skuid__text contents="All" uniqueid="sk-20QH-89469"/>
						<skuid__chart model="Page" maintitle="{{Model.labelPlural}}" type="pie" uniqueid="sk-20Q3-84946">
							<dataaxes>
								<axis id="axis1"/>
							</dataaxes>
							<categoryaxes>
								<axis id="categories" categorytype="field"/>
							</categoryaxes>
							<serieslist>
								<series valuefield="Name" splittype="field" aggfunction="count" splitfield="skuid__API_Version__c"/>
							</serieslist>
							<colors/>
							<legend layout="horizontal" halign="center" valign="bottom"/>
						</skuid__chart>
					</components>
				</division>
			</divisions>
		</skuid__grid>
	</components>
	<resources>
		<labels/>
		<javascript>
			<jsitem location="inlinesnippet" name="randomSnippet" cachelocation="false">const params = arguments[0];

console.log('doNothing')</jsitem>
		</javascript>
		<css/>
		<actionsequences>
			<actionsequence id="eaeed652-e117-4dd3-8587-c2661f1f160c" label="New sequence" type="event-triggered" event-scope="component" event-name="page.rendered">
				<description/>
				<actions>
					<action type="action-sequence" action-sequence-id="3a179987-2499-44ed-b8bf-03d7a130609b" enabled="false"/>
				</actions>
			</actionsequence>
			<actionsequence id="3a179987-2499-44ed-b8bf-03d7a130609b" label="New sequence" type="reusable">
				<description/>
				<actions>
					<action type="requeryModels" behavior="standard">
						<models>
							<model>Page</model>
							<model>Page1</model>
							<model>Page2</model>
							<model>Page3</model>
							<model>Page4</model>
							<model>Page5</model>
						</models>
					</action>
					<action type="requeryModels" behavior="standard">
						<models>
							<model>PageVersion</model>
						</models>
					</action>
					<action type="requeryModels" behavior="standard">
						<models>
							<model>PageInteraction</model>
						</models>
					</action>
				</actions>
			</actionsequence>
		</actionsequences>
	</resources>
	<styles>
		<styleitem type="background" bgtype="none"/>
	</styles>
</skuid__page>