[]
        
(Showing Draft Content)

性能优化自查清单

推荐阅读

技术决策者

项目经理

高级技术人员

初级技术人员

测试人员




type=info

在技术社区中,我们和广大用户整理和总结了大量实用技巧,摘录如下并定期更新。当您希望提升系统性能时,强烈推荐先基于本清单做自查。

本清单中包含的项目包含“推荐”、“建议”、“参考”三级:

  • 【推荐】:效果显著,适用于所有项目

  • 【建议】:在数据量大、并发数多的项目中效果显著

  • 【参考】:有一定的效果,能让系统的性能更进一步

一、部署

  • 【推荐】如存在大批量集中打印的场景,推荐将打印相关的应用单独部署,不要与其他业务应用放在同一台主机(虚拟机)上

  • 【推荐】优先采用外联库,如MySQL、Microsoft SQL Server等

  • 【建议】如果内网IP能固定不变,在配置连接字符串、文件目录等涉及到机器名的地方,统一采用内网IP连接,可减少DNS解析带来的性能开销

  • 【建议】将外联库与活字格服务管理器分开部署到同一内网下的不同主机(或虚拟机)上

  • 【建议】对于并发量较高的应用场景,需加大网络带宽,通常不建议选择5Mbps以下的网络带宽

  • 【建议】不能忽略CPU的核心/线程数对大并发下的性能影响,不建议在生产环境中选择2个或更少的核心数

  • 【建议】推荐将数据库服务器和活字格服务管理器安装在SSD固态硬盘上,如果采购的是云主机,推荐选择SSD的硬盘类型

二、数据库

2.1 设计:为查询所需的字段设置索引

【推荐】在满足 数据库设计最佳实践 ,使用外联库而不是内置库的基础上,推荐您分析数据量大、使用频率高、用户反馈慢的应用场景,为数据库添加索引来大幅提升数据查询性能。以下情况推荐加索引:

  • 主键(默认有聚簇索引)

  • 做为查询条件的外键列(设置了关联字段的列),如从表中连接到主表的列,业务实体表中连接到主数据的列等

  • 经常作为的查询条件(包含视图、存储过程、表格的查询条件、设置变量命令、ODATA等)使用的其他列,如历史凭证表中的年度等

  • 数据插入和删除会产生索引碎片,需定期重建索引(如在MSSQL中执行ALTER INDEX ... REBUILD,MySQL中执行OPTIMIZE TABLE),具体操作请参考数据库厂商的文档

2.2 开发:利用SQL编程提升性能

【建议】如果使用【数据表操作命令】、【设置变量命令】对数据库进行增删改查的性能不能满足预期,活字格还提供了三种SQL编程机制:

  • 视图:数据库提供的预定义查询能力,在活字格设计器中可以像操作表一样对视图进行操作

  • 存储过程:数据库提供的预定义SQL片段,在活字格设计器中可以在命令和服务端命令中调用

  • 执行SQL命令:活字格设计器提供的服务端命令,可执行参数化的SQL语句,将变量作为传入参数,并将返回结果存放到变量中。参考 帮助文档

三者的执行性能差距不大,主要区别如下表所示。

编程方式

视图

存储过程

执行SQL命令

传入参数

自定义返回值

版本管理

不支持

不支持

支持

数据绑定使用

支持

不支持

不支持

服务端命令中使用

支持

支持

支持

命令中使用

支持

支持

不支持

三、服务端命令&工作流

服务端命令中的逻辑编排与编码开发类似,性能风险较小。

四、页面设计与交互

页面加载

  • 【推荐】如果客户端可以联网,强烈推荐启用CDN,操作方法:【示例解读】使用活字格云提供的CDN

  • 【推荐】尽量简化页面加载命令,只用来加载必须的数据,如在页面加载命令中只加载列表数据,点击列表的项目后,再加载明细数据

  • 【建议】设置“渐进式加载”以加快页面内容展示出来的速度

页面设计

  • 【推荐】如果表格或列表(图文列表)的数据量大,不要在初始化时加载数据,而是提供“加载”按钮,引导用户在页面呈现完毕后手动加载数据。

  • 【推荐】如果表格的数据量大,不要开启列头排序,因为多字段排序通常无法命中索引,导致加载速度过慢

  • 【建议】如果表格或列表(图文列表)的数据量大,推荐为其设置查询功能,即便有分页,也要避免展示全部数据(如仅允许查询指定年/月的交易数据,而不是全部历史数据)

  • 【建议】等比拉伸需要更长的渲染时间,不推荐用于CPU能力弱的PDA等移动设备,可用动态的行高、列宽代替

  • 【建议】避免在一个页面内放置过多的元素,如果无法避免,推荐将其拆分为多个子页面,再利用【可交互页面容器(iFrame)】插件将其组合,并通过配套的命令实现父子页面间的数据交互。

组合框

  • 【推荐】在不支持编辑操作的页面,不要使用组合框来展示数据,建议使用【数据绑定→关联此字段的其他表】替代,以避免不必要的数据加载(即便设置为只读,页面加载时也会自动加载组合框的列表)

  • 【建议】对于字典表(如操作状态)、不经常修改的主数据(如员工档案、存货档案)的组合框,建议使用【客户端缓存操作工具库】缓存组合框的选项,详情参考:【示例解读】前端/客户端缓存Demo

  • 【建议】来自数据库的候选列表的行数过大时,建议开启“动态加载项目”选项

  • 【建议】对于数据实时性要求不高,数据量较大且来自数据库查询视图的,可勾选【使用缓存】,并根据实际情况调整缓存有效期

表格&图文列表

  • 【推荐】如果表格的查询条件是引用的第三方变量或者单元格(不是一个常量),表格勾选下初始化不加载表格数据,否则会导致表格绑定数据的重复加载

  • 【推荐】为表格启用分页或按需加载,避免一次加载的数据量过大 详细了解:不同加载方式的性能对比:未设置 >> 分页 ≈ 按需加载

  • 【推荐】在处理能力受限的PDA设备中操作图文列表,推荐用分页代替按需加载,避免页面元素累计过多导致页面响应变慢

  • 【推荐】尽量避免在表格中使用Vlookup和ODATA,建议使用【表关联】配合【数据绑定→关联此字段的其他表】替代,或者使用服务端命令(前后端分离架构)、编写查询视图

  • 【推荐】页面加载时会初始化每一个位于可见区域的表格,所以,尽量减少页面上展示的表格数量,尤其是在处理能力偏弱的移动端设备上(能耗较低的PDA设备上,原则上不推荐使用表格展示数据)。除非必须在移动端提供类Excel的编辑功能,建议使用【El-表格】或【图文列表】做数据展示,数据操作可以使用【对象与集合操作】插件或位于隐藏区域的表格来完成。详细了解:挑战极限,如何优化PDA设备上的性能表现

  • 【建议】表格中公式的运行次数会随着表格的行数倍增,避免在表格中编写复杂的公式,建议使用【视图】代替

  • 【建议】表格中的列合并需要更长的渲染时间,不推荐用于CPU能力弱的PDA等移动设备

  • 【建议】需要打印或导出的表格中,推荐不放置按钮,如果无法隐藏,可以使用超链接代替。详细了解:不同单元格类型的打印性能对比,超链接 >> 按钮

  • 【建议】对于数据实时性要求不高,数据量较大且来自数据库查询视图的,可勾选【使用缓存】,并根据实际情况调整缓存有效期

ODATA

  • 【推荐】页面上的ODATA太多,会影响页面加载速度,建议使用设置变量命令、服务端命令(前后端分离架构)、【视图】等方式代替

  • 【建议】ODATA本身的性能风险较高,除非必要,不推荐使用。建议使用设置变量命令代替

公式

  • 【推荐】页面上的公式太多,会严重影响页面加载速度,建议使用服务端命令(前后端分离架构)、【视图】等方式代替

  • 【建议】相比于数据库操作,Vlookup的性能较差,不建议大量使用,建议使用【表关联】配合【数据绑定→关联此字段的其他表】替代,或者编写查询视图

  • 【建议】不要在页面上设置可能产生死循环的命令,如A引用B,B引用C,C引用A时

  • 【参考】在拼接表格上展示或选择的ID时,推荐使用TEXTJOIN公式代替循环命令,参考 帮助文档

其他

五、扩展阅读

type=info

image 温馨提示

企业级低代码开发最佳实践是活字格官方面向进阶开发者推出的产品技术资源,旨在帮助对活字格基本功能有一定了解的开发者快速提升应用开发能力,保质保量做好企业级项目交付。如果您是初次接触活字格,这些内容可能会有些艰深难懂,这也是正常的。如果您有软件开发经验,推荐您学习《面向程序员的活字格入门课程》;否则,您也可以免费报名参加新手训练营直播课程或购买阅读《低代码开发实战:基于低代码平台构建企业级应用》(机械工业出版社),快速上手低代码开发。