简介
第一印象很重要。 应用用户得到的第一印象是应用显示第一个屏幕或提供其他视觉反馈(如进度指示器)需要多少时间。 在启动过程中,您的应用执行多个步骤以准备呈现第一个屏幕:身份验证、获取元数据、OnStart 处理和呈现屏幕。
身份验证 - 处理为应用程序配置的连接的所有身份验证提示。 删除未使用的连接器可以减少提示数量,并加快流程。
获取元数据 - 检索元数据,例如应用运行的 Microsoft Power Apps 平台的版本,以及检索数据时必须使用的源。
OnStart 处理 - 评估您在 OnStart 属性中设置的公式。 简化此处理对于改进应用的加载时间具有直接影响。
呈现屏幕 - 第一个屏幕已准备就绪并呈现给用户。 指定的 OnVisible 公式将首先实现。 优化公式并最小化屏幕上的控件数可以改进加载时间。
本模块阐述如何评估应用加载时间并确定改进策略。
评估应用加载时间
在评估应用加载时间时,建议首先确定加载应用所需的基准时间。 要完成本任务,您可以测定启动时间,即从您启动应用程序到您认为可以使用应用的时间。 使用秒表来测定从启动应用到您认为可以开始使用应用的时间。 本模块的后面将讨论您在加载期间测定和钻取性能详细信息时可以使用的工具。 我们建议您对每次应用更新进行新的评估,以便您可以将新版本与先前的基准进行比较,然后确定加载时间是否显著增加。
测定启动时间可帮助您了解实际时间。但是,您应考虑观察并询问用户对应用性能的感知。 您有时可以在几秒钟内加载某个应用,但用户可能会认为时间要长得多,因为他们认为应用还不能使用。 举个例子,应用程序在显示第一个屏幕后,即使用户已在与之交互,它仍然在继续加载数据并更新信息。 解决这两个问题的方法因情况而异。 如果您要改进加载时间,则您通常可以获取必需数据指向应用花费时间的位置。 如果您要改善用户感知,则您需要观察使用该应用的人员,以了解他们是如何使用的以及进行哪些更改可能会改善他们的感知。 进行细微更改有助于改善感知,例如,添加开始交互的文本提示,或将开始屏幕更改为持续存在并重新加载最新记录。
通常,通过查看应用的第一个屏幕的 OnStart 属性或 OnVisible 属性可以发现降低应用速度的组件。 通过优化或推迟在这些属性中执行的工作,您可以加快加载。 本模块的后面部分将阐述其中的一些方法。
如果您从 Maker Portal 查看应用的分析,它将包括出现第一个屏幕所花费的时间和出现第一个屏幕所花费的时间(不含设置连接所用时间)分析。
所提供的数据包含最近 30 天的数据,有助于提供应用性能摘要。
用于评估应用的另一个选项是 Power Apps 评估工具。 该开放源工具已作为解决方案打包,可导入 Microsoft Dataverse 环境。 导入本工具后,您可以使用它来评估环境中的应用。 您还可以上传 .msapp 文件以供评估。 自动评估可以根据可自定义的最佳做法检查清单检查您的应用,并且它可以识别许多可能影响应用启动时间和应用一般性能的常见问题。 完成自动评估后,您可以查看一个列表,其中显示您的应用性能良好的方面以及可以改进的可行项目。
除了查看应用中的结果之外,您还可以通过电子邮件发送结果,如果您不是应用开发者,可能会需要本功能。
工具可以检查的可能影响启动时间的常见规则包括:
使用并发函数 - 考虑对并行独立数据请求使用并发函数。
应用设置标志 - 查看应用设置。 确保已启用延迟加载和显式列选择。
委托 - 确保 ClearCollect 和 Filter 操作可委派。
资产优化 - 审查嵌入的资产压缩/大小优化。
数据加载策略 - 查看 OnStart 和 OnVisible 数据加载策略。 避免在 OnStart 中进行数据调用。 尽可能移至 OnVisible。 确保重要的数据调用仅在主屏幕初始加载期间阻止用户与 UI 交互。
跨屏幕依赖项 - 请确保在组件(例如菜单、页眉、页脚)中封装重复 UI 元素。
查看应用设置
应用设置可能会对应用的性能产生重大影响,因此,请确保在每次应用更新时查看应用设置及其启用的状态。 较旧的应用可能未自动启用最新的应用设置选项,以确保新选项不会中断现有应用。 您可能还启用了一个设置,以尝试解决问题,但在完成后忘记停用该设置。 本情景的一个典型示例是调试发布的应用选项。 启用本选项可在您使用应用监视器对已发布的应用进行排除故障时显示更多调试信息。 启用本选项可能会影响性能,因此在生产使用时不应保持启用本选项。
要考虑的另一个设置是数据行限制。 本设置确定在不支持委托时从基于服务器的连接检索到的最大行数。 默认情况下,该值是 500,但它可以是介于 1 至 2,000 之间的任意值。 为了解决应用中的委托问题,人们通常会增大该值。 如果增大该值,当开发环境容纳的数据集远远少于生产环境容纳的数据集时,可能会导致出现意外问题。 例如,如果数据行限制设置为 2,000,则数据行限制中的以下表达式可能在开发环境中仅预加载几行。
ClearCollect(colDesks,Desks)
具有完全填充数据集的生产环境中的同一应用可以检索全部 2,000 行。 因此,应用在生产中的加载速度将比在开发中的加载速度慢得多。 通常,努力消除委托警告比增大本值更好。
在较旧的应用中,可能会启用启用 App.OnStart 中的 Navigate 函数设置。 本设置允许您在 App.OnStart 属性中使用 Navigate() 函数,但必须等到评估完 App.OnStart 中的所有表达式之后,第一个屏幕中的结果才会呈现。 在较新的应用中,不允许使用本方法,您需要改用 App.StartScreen 属性。 本模块稍后将深入讨论 OnStart 和 StartScreen 属性。 如果您的应用启用了本设置,请考虑更新到新方法并禁用该设置,这样可以改进加载时间。
除了上面提及的设置之外,您还应该在即将推出的功能类别查看更多设置。 该类别中有三个部分:预览、实验和已停用。
新设置从实验开始,然后随着它们不断成熟而过渡到预览。 通过实验性功能,您可以尝试新功能,但这些功能不适用于生产应用。 默认情况下,这些功能将关闭,您必须自行启用这些功能。 既然已投入了大量投资来提高应用性能,因此请持续关注本区域,以了解即将推出的功能。
通常情况下,新应用默认启用预览部分的设置。 这些功能处于测试的最终阶段,随后便会变成为所有应用启用的标准设置。 对于现有应用,如果您要使用这些设置,则需要选择启用这些设置。 在某些情况下,选择启用可能需要对公式的使用进行轻微更改。
如果您正在处理性能问题,测试一些即将推出的功能可能有助于您了解这些功能是否有助于解决您面临的难题。 如果能解决您的难题,您或许可以等待功能成熟,而不是放弃它们带来的好处而重新考虑其他选项。
限制和限流
每个连接器在检索的数据方面都受到限制和限流。 而且,平台级别还存在服务保护限制。 请务必了解在应用中使用的连接器的这些限制。 如果应用在启动期间遇到这些限制,则在加载时的速度可能会较慢。
使用加载图像
在应用中进行长时间操作期间使用加载图像或进度指示器可以改善用户感知。
要在加载应用期间使用加载图像,最简单的方法是使用具有旋转图像的组件。 您可以在 Power Apps 工具 GitHub 存储库中找到预生成的图像。 您可以导入本组件并将其放在初始屏幕上的其他控件之上。 然后,您可以使用变量来控制组件的可见性。 下图显示将可见属性设置为变量 showLoader 的值的示例。
然后,在 App.OnStart 中,您可以在加载数据之前启用加载图像,然后在加载数据后关闭该图像。
Set(showLoader, true);
ClearCollect(colDesks, Desks);
ClearCollect(colDeskFeatures, 'Desk Features');
Set(showLoader, false);
虽然使用加载图像不会使应用程序加快,但它可提供视觉反馈,并且可以帮助用户了解应用正在后台执行工作。
本模块的其余部分将探讨其他用于识别和改进应用加载性能的技术。