Trendz 有许多内置优化机制,用于缩短报告生成时间。大多数机制开箱即用,无需任何配置。但部分机制需由管理员显式启用。
Trendz缓存级别
Trendz支持2个缓存级别——视图报告缓存和指标长期缓存。要理解它们之间的区别,首先需了解Trendz中报告的生成方式:
- 用户创建视图配置,添加所需字段,然后点击”构建报告”。
- Trendz根据视图配置生成查询执行计划。查询计划包含字段加载顺序和聚合策略。
- 系统根据查询计划和配置的筛选器加载所需项(设备/资产)。
- 系统为每项加载字段值并聚合。
- 最后一步,生成视图报告并传递到UI进行可视化。
大部分时间花在项加载和数据加载(步骤3和4)。通过在这些步骤缓存中间结果,可提升系统性能。
视图报告缓存 - 若查询计划未更改,可直接返回缓存的视图报告,而无需从ThingsBoard加载数据。
指标长期缓存 - 当数据可按固定间隔(如小时或日期)分组时,可从缓存加载已计算或聚合的字段值,而非从ThingsBoard重新加载。
指标长期缓存
要启用此类型缓存——打开视图设置,导航至缓存设置并勾选启用缓存。
启用缓存后,系统会将聚合的项字段数据存储在缓存中,可以是遥测、状态或字段计算。若字段值已在缓存中则复用;否则系统从ThingsBoard加载并写入缓存。
此缓存不与特定可视化绑定,当同一字段在多个视图中使用时可以复用。
缓存间隔
Trendz缓存包含特定时间间隔的聚合字段数据。用户可定义用于数据缓存的时间间隔。
完整日期 - 遥测数据按天聚合。每天在缓存中有一个值。 完整小时 - 遥测数据按小时聚合。每小时在缓存中有一个值。
选择何种时间单位取决于需求,但多数情况下按天聚合即可。按小时聚合仅在最终报告具有小时维度时有用。例如,周热力图因X轴有小时字段而可能需要。
计划缓存刷新
默认情况下,缓存仅在按下”构建报告”按钮时初始化或更新。当用户首次加载每日或每周生成的重型报告时,这可能至关重要。此时缓存中可能尚无值,系统会直接从ThingsBoard加载数据,用户可能需等待数分钟才能看到报告。
我们可以在后台触发定期缓存刷新。这样,当需要报告时,可以确保所有值已加载到缓存中,用户无需等待原始报告生成。
- 打开视图设置
- 导航至缓存部分
- 勾选自动刷新
- 选择刷新间隔。例如每天。
- 保存更改
后台缓存刷新时,Trendz会向ThingsBoard发送请求。所有此类请求需经身份验证并使用JWT令牌签名。要启用此类身份验证,管理员应在Trendz配置文件中定义login/password对——ADMIN_LOGIN和ADMIN_PASSWORD。若不执行此步骤,计划缓存刷新将无法工作,缓存仅在用户通过UI或REST API请求报告时刷新。
清除缓存
如需可清除长期缓存。若在ThingsBoard中重新导入或更改历史数据,此功能可能有用。
- 点击左下角的”系统设置”图标
- 打开”设置”
- 在缓存部分点击清除缓存按钮
视图报告缓存
某些情况下,可以复用已计算的视图报告,而无需从头计算。当具有多状态的仪表板中添加了视图且用户在不同状态间主动切换时,此功能很有帮助。每次打开状态时,UI将向服务器请求视图报告。
在使用缓存报告之前,应检查以下条件:
- 查询计划未更改。
- 时间范围未更改。
- 现有视图报告未过期。
要启用此类型缓存:
- 在系统设置中启用——
cache.report.enabled——默认已启用。 - 在视图设置 > 缓存 > 勾选缓存报告 - 默认已启用。