Performance Tuning Checklist

Here's a collection of performance tuning tips. They're listed in no particular order of importance but can be considered once your Digital Customer Service application is up and running.

Potential Issue

Performance Tuning Tip

The application is slow because it has not been bundled and minified for deployment.

Refer to the Related Topics area for a link to the Optimize Your Application for Deployment topic.

Large images take too much time to load and are then scaled down for the section of screen within which they're displayed.

Reduce the size of images to the size needed for the UI presentation. Optimize the image for the usage in the UI presentation either by size or quality, balancing small file size against acceptable quality.

Application load times are slow when the client region is far from the data center location of the deployment.

Deploy the application to global Content Delivery Network (CDN).

Visual Builder's CDN functionality sets the base href of the application to the CDN server to ensure all resources are correctly loaded from the CDN. As a result relative URLs including anchor references will be resolved relative to the base href value.

For application navigation it's recommended you use the Visual Builder navigate action and the DCS navigate event. Where href="#" has been used as a placeholder it should be replaced with href="javascript:;".

To navigate to an anchor within a page you will need to use <a href="javascript:;" onclick="document.location.hash='myanchor';">

Refer to the Related Topics section for a link to the topic Host an Application on a Content Delivery Network (CDN).

Page navigation is slow because of URL links and results which are reloading the entire application with each navigation.

Do page navigation with navigation events.

For information on using your Navigation Action to assist in tuning navigation between pages in a flow, and to root pages, see the Related Topics section for the Navigate Action topic in the Developer Applications with Oracle Visual Builder guide.

For an example of how this works, see these action definitions of the service-request-list-start page: NavigateToServiceRequestCreateActionNavigateToServiceRequestCreateAction

andListNavigateToServiceRequestDetailClickAction

REST calls are slowing page navigation.

  • Reduce the number of REST calls that need to be made on each page.

  • Be careful not to create heavyweight back end triggers that can cause REST APIs to slow down.

There have been cases when multiple copies of jQuery are being loaded, unnecessarily.

Ensure that there are no files being loaded unnecessarily.

Service worker scripts cause performance degradation.

Disable service workers if they are enabled.

You can completely disable the loading of the service worker script by adding the following to your index.html file:

<!-- visualBuilderScripts -->:

<script type="text/javascript'>

window.vbInitConfig.SERVICE_WORKER_CONFIG = {

disabled: true

}

</script>

When a record is created or updated performance is degraded with the back and forth from the server which calculates all fields each time.

Turn off unnecessary responses for POST and PATCH operations.

Most create and update operations don't require a response from the server so the responsiveness of both the CSP and CSE applications could be improved by turning them off.

Slow performance

Limit the size of response payloads by using the fields= parameter in the request.

Slow performance

Use the onlyData parameter and set it to True.

Slow performance

Combine multiple API requests into single requests when possible

  • When many fields are needed in the response, use the expand= parameter on child settings.

  • Use the fields= parameter to return the children and grandchildren records with identified field of interest.

  • Use Upsert-Mode: true command to update or insert during POST to avoid multiple calls to check for an update versus an insert operation.

Slow performance

Configure bundle modules

You can minimize what needs to be loaded on initial load by loading only the bundle that contains files needed on initial startup.

For example, define a bundle for files needed for anonymous access, and separate bundle(s) for subsequent flows that require authenticated access.

For more information, see the Related Topics for a link to the Bundle Modules topic from the Developing Applications with Visual Builder guide.

Access to secondary servers may be delayed by DNS resolution.

Use preconnect to establish early connections to important secondary servers, such as the Fusion Service and the CDN server if one is used, by adding a directive to index.html.

For example, <link rel="preconnect" href="https://example.com">