Optimization Strategy: Centralized Data Processing vs. Individual Session Bindings

Hi everyone,

I’m looking for advice on the most performant way to handle "heavy" dashboards in Perspective.

The Scenario: I have a dashboard that needs to display aggregated data for a large number of assets, for example:

  • Status counts for 50+ Chillers (Running, Stopped, Faulted).
  • Real-time averages for 200+ sensors.
  • Totalized values across multiple equipment groups.

Current Approach vs. Proposed Idea: Initially, I considered using Indirect Bindings or Transform Scripts on each session. However, I’m concerned about the performance impact on the Gateway if multiple users open the same dashboard simultaneously, triggering hundreds of redundant tag reads and calculations.

My Proposal: Instead of each session performing its own calculations, I want to create a centralized script (perhaps a Gateway Timer Script or a Tag Change Script) that:

  1. Reads all necessary tags in a single call using system.tag.readBlocking.
  2. Performs the aggregations and logic in the background.
  3. Writes the results to a set of Expression Tags or a Document Tag (JSON).

This way, the Perspective sessions simply bind to these "pre-calculated" tags without executing any heavy logic.

Questions:

  1. Is this "Global Aggregator" approach considered best practice for high-tag-count dashboards?
  2. Are there any pitfalls to using a single JSON Document Tag to store all dashboard stats?
  3. Would it be better to use a Gateway Tag Change Script on a specific folder or a Timer Script?

I'd appreciate any insights on how to keep the Gateway Lean while scaling the number of active sessions.

  1. if you typically have the same dashboard open in more than one client, yes, this is a good plan.

  2. not a problem.

  3. use a timer event. Or perhaps a scheduled event for once per minute updates (or slower).