# How do you increase performance for clients?

**URL:** <https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703>\
**Category:** Ignition\
**Created:** [August 4, 2022, 8:44pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703 "2022-08-04T20:44:33Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 4, 2022, 8:44pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/1 "2022-08-04T20:44:33Z")

</div>

Hello everyone. Does anyone have any tips that will inform me on how to speed up loading screens and increasing display performance? Expression and indirect addressing objects seems like it takes forever to load and I am staring at a screen with error overlays. It looks pretty bad as you navigate from page to page. TIA!

Please reference this old thread.

> [@Caching](https://forum.inductiveautomation.com/t/caching/1659):
>
> It look like caching is on a project basis with only one cache. ie: every time you change projects, the cache is thrown out. Can this be changed to remember the old project cache?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 4, 2022, 8:48pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/2 "2022-08-04T20:48:41Z")

</div>

Vision or Perspective?

In general, though:

1. Minimize the amount of data that must travel between gateway and client.

2. Minimize the amount of duplicate data repeatedly sucked out of your database (caching, etc).

3. Minimize the amount of duplicate calculations done for multiple points of use (less important in Vision clients).

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 4, 2022, 9:45pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/3 "2022-08-04T21:45:22Z")

</div>

@pturmel's points address improving performance. If Perspective, this method makes things look a lot better during navigation by hiding the invalid states while waiting for data to arrive:

> [@\[Feature-1147\]Perspective - Delay Binding until custom property bindings have been evaluated](https://forum.inductiveautomation.com/t/feature-1147-perspective-delay-binding-until-custom-property-bindings-have-been-evaluated/43947/7):
>
> @chi we delay the initial display for simplicity. Most cases for us the evaluation takes \<1s but we have got some animations that hide for 2s then fade in for 1s on the particularly complex displays. This technique works particularly well for dynamically embedded views (I’m finding embedded views are still a little bit laggy, but I know that various solutions are being discussed by Ignition dev/support). If you have a fade in on the embedded view component and the child views, it hides the init…

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 4, 2022, 9:58pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/4 "2022-08-04T21:58:00Z")

</div>

Hey guys, thanks for the responses. I am using Vision. Will vision never look as good as perspective in terms of the error overlays then? I barely have any data traveling between the gateway and client, so I don’t think there is much to minimize.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [August 4, 2022, 10:00pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/5 "2022-08-04T22:00:59Z")

</div>

It might help if you can provide some screenshots or video examples of the screens and slow loading you’re dealing with.

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [August 4, 2022, 10:42pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/6 "2022-08-04T22:42:10Z")

</div>

A few things to note, don't use UDT parameters, many threads on this, here is one:

> [@UDT Parameters vs UDT Custom Properties](https://forum.inductiveautomation.com/t/udt-parameters-vs-udt-custom-properties/54593):
>
> I’m trying to determine why I would use UDT Parameters vs UDT Custom Properties. I think I have seen @pturmel mention that he prefers the use of custom properties in his projects, but I’m not sure why? It appears to me that the main distinction between UDT Parameters and UDT Custom Properties is that the Parameters can be bound to by the UDT child elements within the scope of the UDT. However, within the scope Ignition Project, it appears that bindings can be made as easily to Parameters as th…

Also, I gave up on overlays. Even on the fastest window, I would always get flickering of the overlays. I turned them off during project load, I think it was `system.tag.setOverlaysEnabled(0)`

---

<div class="post-metadata">

**Author:** ![nicholas.robinson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nicholas.robinson/32/22188_2.png) [@nicholas.robinson](https://forum.inductiveautomation.com/u/nicholas.robinson)\
**Post date:** [August 5, 2022, 1:33pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/7 "2022-08-05T13:33:26Z")

</div>

@William_R

One method is to reduce the number of individual bindings that exist on a single page and package tags that are similar (and make sense to be put together) into a dataset and then make the binding the client uses to the dataset rather than each individual tag. Our architect compares this to moving sand with a bucket rather than one grain at a time.

No idea if this can help in your case, but it is something we use often.

Cheers,

Nick

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 5, 2022, 2:14pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/8 "2022-08-05T14:14:25Z")

</div>

> [@nicholas.robinson](#):
>
> into a dataset and then make the binding the client uses to the dataset rather than each individual tag

Ewww! Just no.

{ I would expect that technique to have _negative_ performance. The gateway collects tag changes that it knows a Vision client wants and delivers them in bulk at the client's poll rate. Delivering an entire dataset when not all elements change would significantly increase traffic. }

---

<div class="post-metadata">

**Author:** ![nicholas.robinson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nicholas.robinson/32/22188_2.png) [@nicholas.robinson](https://forum.inductiveautomation.com/u/nicholas.robinson)\
**Post date:** [August 5, 2022, 5:26pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/9 "2022-08-05T17:26:59Z")

</div>

Since I received a “Ewww!” on my post I’ll add further qualifications to prevent being misunderstood.

A place we would use the dataset method would be on a screen that allows for viewing of all PLC I/O. In that case there can be 10k’s of tags and the most practical way to let the user see the state of any I/O point they want is with a dataset.

In any case, we would use it in places where the main source of consumption on the screen uses a table.

If data is not consumed using a table, other methods are probably better.

Nick

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 8, 2022, 8:27pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/10 "2022-08-08T20:27:48Z")

</div>

Thanks everyone. Is the overlay just something you have to deal with in ignition? I got that impression from other posts as well. Here is a video of some of the overlay lags:  
 ![Ignition Overlays](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/a/3a3fe2ae5c7f5def6b77facb2dd4f08125728d28.gif)

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 8, 2022, 8:55pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/11 "2022-08-08T20:55:07Z")

</div>

We’ve dealt with this in Vision by delaying display (cover it with some form of loading overlay) for a bit to give time for bound data to arrive. This accomplished what we now use a delayed fade-in transition in Perspective for.

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [August 8, 2022, 8:59pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/12 "2022-08-08T20:59:06Z")

</div>

> [@William\_R](#):
>
> Is the overlay just something you have to deal with in ignition?

I think it depends on who you ask. IA has released fixes over time that was supposed to solve this, at least that is how they were advertised. But, in my experience none of the fixes actually fixed the overlay problem. As I mentioned earlier, I dealt with them by turning them off. I like the idea of having overlays, but not like how they currently behave.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 8, 2022, 9:05pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/13 "2022-08-08T21:05:22Z")

</div>

Though I haven’t done this, turning off overlays for a few seconds on page load and then re-enabling them so configuration errors (as opposed to delayed data arrival) are shown might be a good solution.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 8, 2022, 9:10pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/14 "2022-08-08T21:10:26Z")

</div>

> [@witman](#):
>
> This accomplished what we now use a delayed fade-in transition in Perspective for.

Not sure what you mean here, but I like the thought of delaying the display. I will most likely try that as well, thank you.

@jlandwerlen I made a button that turns off the overlays after I read your comment above, so thank you. Though, with a product of this caliber I feel like this shouldn't be an issue to where we have to turn them off. Feels like a dirty fix on our end and we lose functionality because of it. Every screen has at least some overlays, making transitions between windows look pretty terrible at times.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [August 8, 2022, 9:11pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/15 "2022-08-08T21:11:33Z")

</div>

I agree with the sentiment that the overlays in v8 are noticeably more annoying than in v7.

I can’t say that windows actually load any slower, but the visible overlay thrashing on window changes definitely make it _feel_ slower.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 8, 2022, 9:13pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/16 "2022-08-08T21:13:36Z")

</div>

@bmusson Agreed. And its happening on a standard template I am creating, before a large amount of tags even get put into the program. I’m scared to see how it looks when this HMI will actually have an assembly line being displayed on it.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 8, 2022, 9:17pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/17 "2022-08-08T21:17:42Z")

</div>

> [@William\_R](#):
>
> > [@witman](#):
> >
> > This accomplished what we now use a delayed fade-in transition in Perspective for.
> 
> Not sure what you mean here, but I like the thought of delaying the display. I will most likely try that as well, thank you.

I'm referring to a Perspective solution noted above before I realized this was for Vision:

> [@How do you increase performance for clients?](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/3):
>
> @pturmel’s points address improving performance. If Perspective, this method makes things look a lot better during navigation by hiding the invalid states while waiting for data to arrive:

In Vision applications, we cover up the screen with a loading layer that's visible for a bit on page load and then hidden by a script. We use a script like this in window visionWindowOpened event so we don't need to remember to save the window with loading mask visible in Designer:

```auto
loadingMask = system.gui.getParentWindow(event).getComponentForPath('Root Container.loadingMask')
loadingMask.visible = True

```

And a script like this on the loadingMask component that covers everything else during load:

```python
if event.propertyName == 'componentRunning' and event.newValue:
	# Hide this loading mask when loading complete and this layer's (actually a group--groups used for layers) background is running.
	def hideMask():
		event.source.visible = False
	system.util.invokeLater(hideMask, 0)

```

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [August 8, 2022, 9:18pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/18 "2022-08-08T21:18:19Z")

</div>

> [@witman](#):
>
> Though I haven't done this, turning off overlays for a few seconds on page load and then re-enabling them so configuration errors (as opposed to delayed data arrival) are shown might be a good solution.

If that works, it is far better than to just leave them off. I never tried your approach, curious how well it would work.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 8, 2022, 9:23pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/19 "2022-08-08T21:23:46Z")

</div>

@witman Thanks for that detailed response! I will look into this. Cheers.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 8, 2022, 9:25pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/20 "2022-08-08T21:25:50Z")

</div>

You bet. You may need to increase delay milliseconds (“0” on last line of second script) to fully skip overlays).

[Next page](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703.md?page=2)
