Best Practices & Performance Optimization in Qlik Sense
If you're looking to extend and apply best practices in Qlik Sense, you can find their official guide here, which includes a slide show and a video, and their reference on optimizing app performance here.
If you do think you have a problem with performance and need to investigate further, Qlik Sense has published a guide, which you can access here.
This topic contains the following sections:
Migrating from QlikView?
Migrating from QlikView to Qlik Sense is a breeze with Vizlib. It is important to note that QlikView rendered its charts objects on a server, then sent over images of these to the end user's browser.
With Qlik Sense, although the calculations are done on the server, the end user's browser does the rendering work, like it is done on a typical website.
Reduce Clutter and Improve Performance
Having many objects on the sheet and/or over-utilising the extend sheet's functionality can negatively impact performance. Each time a selection is made, the objects are re-calculating. As we all know, this happens on the Qlik Sense Server, but we also ask the browser to re-render the objects after receiving this data.
Consolidate Repeated or Similar Objects
Each object loaded in Qlik Sense has a small overhead. Even adding many small objects (like buttons, for example) to the sheet can slow down the initial load times and impact the performance when making selections.
Each loaded object in Qlik Sense will load a separate instance of the same code, consuming precious browser resources. For example, Vizlib KPI Designer can benefit from using fewer objects and more layers. You could have 4 Objects in a row, but only need to display one. Not only will they load faster, but they will load together, at the same time (Figure 1).
Figure 1: KPI Designer Objects and Layers
Load Time Calculations
A user's first impression of performance is the initial load time of the page. Setting a default bookmark, or limiting the calculations used on the first load (set analysis, conditional expression) will no-doubt increase page-load performance. Vizlib Filter has the ability to set a default selection on object-load, this is ideal per-sheet, but may not be best placed if you wish to have this running on application first load.
The default selection is made once the extension has finished loading - since this is an extension, the data will have an initial load of its default set (presumably all data), then the selection will be applied - this results in 2 calculations being made.
Qlik Sense's own feature, default bookmarks, apply at an application load level. This feature can set a preferred sheet and default selection when the application is loaded (this only calculates once, which is ideal for application-level default selections).
If you see the image below for extended periods of time, this is only shown when Qlik Sense is calculating data for the objects. Calculations (not just the visualised data, but expressions for color etc) are run by the Qlik Engine, whilst Vizlib extensions offer more options for expressions, Vizlib extensions use the same data and the calculation time will not be impacted in the majority of cases (certain configurations like advanced analytics will of course require another layer of calculation to run forecasts and/or clustering).
Review Calculations and the Data Model
Sometimes, what can slow down an application are the calculations requested by the Qlik Sense Engine. This isn't just calculating the visible expressions, but the expressions which you may likely use to control conditions, the display of colour, or other non-metric related expressions.
This may mean reducing the number of "extra" expressions used to conditionally colour table cells based on their value, or the bars in a chart to speed this up. It may even be worth limiting data or loading subsets of the data using set analysis (for example, only certain months of data).
The data model is an important consideration as well. Reducing synthetic keys is a standard approach to improving performance as well as normalisation in some cases. Qlik benefits the most from having a star scheme, so this should be considered when building an app.
You can find links to performance articles tagged in the Qlik Design blog.
Using Vizlib Extensions with Other Extensions
Adding more extensions to the sheet (even Chrome extensions, like Grammarly or Pinterest) will load themselves onto the sheet, adding complexity and taking longer to load. If you do see some issues, try to remove non-Vizlib extensions and see if there is a performance improvement. Sometimes, other extensions may face conflicts with our code.
With Chrome extensions (as well as other browser extensions), you can disable them loading on certain sites – this will help to avoid slowing down your browser.
Optimising Vizlib Professional (Cloud) Network Performance
If you experience a delay with Vizlib Cloud, there may be some firewall settings or external traffic scanning on your network, delaying the connection to our servers. We have servers in multiple regions, and the wait time you should be experiencing should be under 500 milliseconds for contacting our nearest server. Using a VPN can have a bottleneck effect since traffic must go through multiple networks before reaching the end-user browser.
You may also need to consider whitelisting our servers on your network, so we would advise working with your network team to optimise your connection to our servers. You can find details of the servers that need to be whitelisted in our article here.
Internet Explorer Users
If you wish to continue using Internet Explorer, please read this article from Qlik, about Supported Browsers and Performance Tuning.
Your IT team may wish to consider migrating from IE11 to a modern browser, since software support and even support on windows is decreasing for this browser. Other enterprise browsers are available, like Google Chrome Enterprise.