性能优化

已完成

若要确定如何优化应用的性能,我们先来介绍一下应用启动时会发生什么。 然后,我们将讨论导致性能低下的一些常见原因。

应用执行阶段和数据调用流

在用户开始与应用交互之前,应用就会经历若干执行阶段。 之后,应用将根据数据源执行不同的数据调用流。

画布应用中的执行阶段

向用户显示界面之前,画布应用会经历以下执行阶段:

  1. 对用户进行身份验证:提示新手用户使用其凭据登录来连接应用。 根据组织的安全策略,每当用户重新打开应用时,系统可能会再次提示该用户。
  2. 获取元数据:检索元数据(例如应用运行的 Power Apps 平台版本,以及应用的数据源)。
  3. 初始化应用:执行应用的 OnStart 属性中的任务。
  4. 呈现屏幕:呈现应用的第一个屏幕,包括控件和数据。 该应用会执行相同的流程来呈现用户打开的任何后续屏幕。

画布应用中的数据调用流

在画布应用数据调用中,使用 OData 协议发送和接收数据。 对于大部分数据源,系统会从应用到 Azure API 管理,再从 API 管理到数据源进行数据调用,然后以相反顺序通过相同步骤返回到应用。 如果存在本地数据源(例如 SQL Server),则还必须通过本地数据网关继续调用。 所有这些调用流入口均可能会影响性能并提供潜在的优化机会。

使用 Microsoft Dataverse 作为数据源会显著更改数据流调用。 对 Dataverse 进行数据调用时,OData 请求将直接转到 Dataverse,而无需通过 Azure API 管理、连接器或数据网关。 换句话说,使用 Dataverse 时,要通过的入口数更少。

画布应用性能低下的常见原因

现在您已基本了解执行阶段和数据调用流,下面我们来介绍画布应用中性能低下的一些最常见的原因。

应用设计

应用设计是一个广泛的领域,因为可通过多种方式设计应用。 但是,可能影响应用性能的一些设计方面包括:

  • 应用具有大量客户端操作,这意味着应用最初将大数据集传入数据集合中。 然后,在客户端设备上处理的函数(例如 JSON、Sort、AddColumns 和 GroupBy)中(可能多次)使用数据。
  • 应用在 OnStart 中有一个很长的公式,这使它在其他屏幕中触发许多数据调用,这些数据调用会返回大量数据记录。

您可以使用 Monitor 审查应用设计是否是应用性能低下的可能原因。 检查哪些数据调用需要较长时间,以及应用中有多少数据调用。

此外,尽量平衡客户端和服务器之间的工作负荷。 尽可能将工作负荷委托给服务器。 就客户端内存消耗而言,实现客户端应用的轻量化十分重要。

数据源瓶颈

可能造成数据源瓶颈的原因有很多。 但最常见的原因是,当许多(事务性或非事务性)查询定向到来自不同用户的同一表或记录时,数据源中的表是活动的中心。

在以下情况下,OData 调用速度可能会变慢:

  • 托管数据源的后端计算机资源消耗殆尽。
  • 后端 SQL 实例被锁定、发生死锁或资源争用。
  • 本地数据网关运行不正常。

出现这些问题时,调整后端数据源以避免应用性能下降。

客户端浏览器、设备和位置

可以在不同的设备和浏览器以及具有不同网络条件的不同位置上使用画布应用。 鼓励用户使用现代、更新的、受支持的浏览器

本地数据网关和环境的地理位置

用户可以在全球范围内访问画布应用。 我们建议您将数据源定位在最大的用户群附近。 例如,应用访问本地数据源时,本地数据网关的位置应靠近数据源,以尽量减少数据网关与数据源之间的任何额外开销。

在后端临时限制大量请求

根据画布应用的设计,可能会在短时间内生成许多数据调用。 当数据调用超出连接器的限制时,应用会暂时受限制。 因此,从许多角度来看,选择正确的数据源和连接器都十分重要,请务必了解特定于连接器的限制。 您可以查看有关连接器的文档,了解它们可能具有的任何限制。

已启用“调试已发布的应用”设置

启用调试已发布的应用设置将导致应用性能更低。 一旦您确定在调试已发布的应用后不再需要查看源表达式,就可以重新发布应用并禁用此设置。

总而言之,我们讨论了用户开始将应用用于执行阶段和数据调用流时会发生什么。 还介绍了可能导致应用性能下降的一些常见方式。 本单元的介绍到此结束,如有需要,您可以单击链接了解提高画布应用性能的实用提示和最佳做法在 Power Apps 中优化性能的注意事项