`

Lotus开发基本性能优化

阅读更多

一:一般的原则
1. 视图的数量和复杂度:尽量使用少量视图,去掉不必要的和相似的视图,视图列的公式等尽量简单化。
2. 尽量不要用@Today和@Now在视图的选择条件或是列公式上.
3. 数据库的文档数量不要太多:要及时做归档。
4. 文档中域的数量:过多的域会影响索引视图时的性能,即使该域没有在视图使用也会。
5. 正在修改的文档数量:会降低视图索引的性能。
6. 删除文档的数量:文档删除后会留下一个删除存根。当复制数据库时,Notes 会使用删除存根识别并删除复本中的该文档。 为了节省磁盘空间,Notes 会根据复制设置“删除最近 [ ] 天内未修改的文档”,从文档删除中清除余下的删除存根。如果 Notes 清除了尚未复制过的删除存根,则在下次复制后已删除的文档将再次出现。此选项位于 Notes 客户机的“文件”“复制”“设置”对话框中的“节省空间”面板上。有很多时候数据库中删除存根的数量比文档的数量还多,这种情况一般发生在比如有一个定时代理,他做的工作是删除该数据库中的文档并从外面的数据源创建新文档并存于该数据库中,我们尽量不要做这种动作。
7.读者域:会影响视图性能。
8.用户数量:很多的时候可以使用集群。

二:数据库级别

下面数据库属性对性能影响比较大
1. 不保留未读标记
2. 保留LastAccessed属性
3. 不支持指定的答复层次:如果该项未启用你就不能使用@AllDescendants,@AllResponses,这两个公式有时候会在视图的选择公式或复制公式中用到。
4. 禁用事务记录
5. 优化文档表格优化

如果你的domino数据存在DB2数据中,这并不会带来性能的提升,他所带来的只是功能的增强。

另外在数据库的ACL要限制用户的创建个人文件夹和视图的权限。用户创建的个人视图是存在工作台文件中的,并不是存在服务器上,数据库的个人视图或文件夹将用此图标存储在工作台中,而不是存储到服务器上的数据库中。从工作台删除图标将删除个人视图或文件夹。但是索引的时候需要将它们拉到服务器上,所以会影响性能。

三:公式方面性能优化

大部分的公式运行的速度都是比较快的,只有一少数部分需要时间比较长的计算,我们要注意使用,如下:
1.@Contains :这个公式不是很浪费资源,但是有的时候用这个公式判断的不是很准确,比如:@Contains(Cities;“Lansing”)如果Cities的值为“East Lansing”其返回的也是True,这个时候如果你想要准确的城市为Lansing的情况,你最好使用 = *= 或者@IsMember来代替,使用这些的时候如果第一个字符不匹配的话就不会在扫描了。
2.使用@Transform来代替@FOR和@While。
3. @Unique( textlist ),需要对比textList中的每一个值.
4.@NameLookup 和@DbLookup相似,只是仅查找names.nsf的。
5.@DbLookup,@DbColumn:
5.1使用缓存:我们开发的时候为了每次结果都是实时的,所以我们使用NoCache,但是正式环境中我们的更改并不会很频繁。
5.2选择正确的视图进行查找.
5.3避免重复查找:
5.3.1例如 @if(@IsError(@DbLookup(“”:”NoCache”;””;”SomeView”;CustID;3);””;) @DbLookup(“”:”NoCache”;””;”SomeView”;CustID;3))
上面说了用NoCache没必要,关键是上面的DbLookup要执行两次,所以可以使用如下方式:
_tmp:= @DbLookup(“”:””;”SomeView”;CustID;3);
@if(@IsError(_tmp);””;_tmp)
或者
@DbLookup(“”:””;”SomeView”;CustID;3;[FailSilent])
5.3.2做一些必要的判断,例如_t:=@if(@IsDocBeingEdited;@DbColumn(“”;””;”Customers”;1);@Return(@Unavailable));
@if(@IsError(_t);””;_t)

四:表单方面:

1. 表单中域的数量过多会影响性能,我们可以将域分组存在不不同的子表单中,这样可以根据需要来进行加载。
2. 表单不要放太多的图片
3. 不要使用存储表单。
4. 自动刷新域:表单的该选项要少用,因为该选项会使表单上的计算域,输入的验证公式在表单编辑等时候重新计算,我们最好的方式是使用“当关键字改变时刷新域”或是域的Onchange和Onblur事件。
5. 太多的共享的设计元素:使用共享的设计元素可以方便维护,但是缺点是过多会对性能有影响。Lotus Notes会有一个缓存来维护设计元素信息,也就是说并不是每次都是读取的原始的共享设计元素。共享操作和共享试图列对性能是没有影响的。

五:视图方面

1. 视图中的@Now和@Today:
使用@TextToTime(“Today”)是不完善的,因为这个公式只有第一天执行。
为什么呢?当你打开一个视图的时候,Lotus Notes会查看试图索引(存储视图中的文档列表和行的值),仅仅检查上次视图索引被更新后新建的文档和修改过的文档。看是否把他们加入到视图中,或是删除,或是其列值的重新计算。
然而如果你使用@Today,旧的视图索引就没有用了。比如我们的选择公式是:
Select Status=”Processing” & DueDate<=@Today
这个时候视图总是别更新为最新的。
如果你使用@TextToTime(“Today”)代替@Today,效率有了,不过就是不是最新的。这点我们可以结合视图属性中的索引设置来平衡。
2. 很多程序慢是因为程序中包括了很多视图。把没用的删除会提高速度。另外试图列也尽量不要太多。
3. 过度复杂的公式:选择公式。列公式 如果@For @While @Transform
4. 过度使用分类,视图索引等
5. 读者域:使用读者域会降低视图的性能,当你打开一个视图的时候Lotus Notes会去扫描每一行来觉得你是否有权限访问,即使该视图中你只有一个文档可以访问也要把整个视图的文档都扫描到的。
下面点是使用时要注意的:
5.1. 读者域值尽量短,比如使用角色代替名字列表。
5.2. 如果一个视图中只有一两个文档是该用户可以访问的,最好不要使用视图的方法,比如你可以给他他封mail,里面有该文档的link。
5.3. 可以使用@SetViewInfo来显示指定列中包含指定字符产的文档。
5.4.使用@UserName @UserRoles在共享视图的选择公式或是列公式是不会得到你想要的结果

六:程序方面。

1. GetNthDocument:使用NotesDocumentCollection的GetNthDocument来循环文档集中的文档是非常慢的,我们可以使用GetFitstDocument和GetNextDocument方法来替代完成。
2. 如果你在视图,表单,文件夹中使用了过多的操作也会影响性能,因为他们每次都会将所有的代码装载到内存中。所以我们尽量把代码写到代理里面,在操作中去调用代理。
3. 过多的Script库:装载10个Script库的时候要大于两次装载5个Script库的时间,尤其是Script中有”Use”其他Script库的情况。
装载两个Script库的时间要大于装载一个包含同样代码两的Script库,所以我们要尽量把功能相同的代码封装在一起。
4. ComputeWithForm:NotesDocument的方法ComputeWithForm会自动更新文档的计算域,但不幸的是速度非常慢,和手动设置一个新的域值相比。所以我们宁可多写几行代码。
5. 将NotesView类的AutoUpdate设为false
6. NotesDocumentCollection有几个已All结尾的方法,是对文档集中所有的文档做一些相关的操作,使用这些方法的速度要高于你去循环每一个文档去做一样的操作要快。
7. 少使用Variant类型的变量,最好使用Option Declare来限制所有的变量都要声明。
8. 使用Profile文档来存储一些配置,共享的信息.

分享到:
评论

相关推荐

    Lotus开发性能优化

    【Lotus开发性能优化】 在 Lotus 开发中,性能优化是一项关键任务,旨在提升应用程序的响应速度和用户体验。以下是一些主要的优化因素及其详细解释: 1. 视图的数量和复杂性: - 视图是 Lotus 应用程序的核心部分...

    IBM Lotus开发手册

    最后,手册可能还会涉及 Lotus Notes/Domino的安全性、性能优化、版本控制和部署策略,这些都是实际项目中不可或缺的部分。 总的来说,《IBM Lotus开发手册》是开发者深入了解和精通IBM Lotus平台的宝贵资源,无论...

    Lotus开发大全,从菜鸟到高手的进阶必备之资料!

    这包括设置和配置Domino服务器,管理用户和群组,以及性能优化和故障排查。对于开发者来说,理解这些管理任务将有助于创建更稳定、更高效的解决方案。 总之,"Lotus开发大全"这个压缩包包含的资料应该是一套完整的...

    lotus开发手册

    8. **最佳实践与规范**:《NOTES开发规范(第二版)》中会详细阐述开发过程中的最佳实践,包括代码规范、错误处理、性能优化等方面,有助于提高开发质量和效率。 9. **调试与测试**:掌握调试技巧和测试方法,确保...

    lotus domino 开发的基本步骤

    以下将详细阐述 Lotus Domino 开发的基本步骤,帮助你深入理解其开发流程。 1. **环境搭建** 首先,你需要安装Lotus Domino Designer,这是IBM提供的集成开发环境(IDE),用于创建和编辑Domino应用程序。安装完毕...

    Lotus 开发C++ API 帮助文档

    10. **性能优化**:在大型企业环境中,性能是关键考虑因素。了解如何有效地批量操作、缓存结果和减少网络通信可以显著提高应用程序的效率。 11. **安全性**:由于Lotus Domino通常处理敏感信息,因此安全编程是必须...

    lotus web开发教程

    9. **性能优化**:学习如何优化Lotus Domino Web应用的性能,包括数据库索引、缓存管理和代理脚本优化。 10. **部署与维护**:了解如何在生产环境中部署Lotus Domino Web应用,以及日常的监控、故障排查和更新策略...

    lotus notes 开发经验大汇总

    Lotus Notes应用的性能优化涉及到数据库设计、查询优化、内存管理等多个方面。开发者应学会评估应用性能,并采取有效措施提升响应速度和资源利用率。 十、最佳实践与案例分析 文件列表中的"案例分析"可能是开发者在...

    Lotus应用程序开发

    综上所述,Lotus应用程序开发不仅仅是技术层面的编程工作,更是一种业务流程优化和创新的推动力。通过合理利用Lotus Domino平台的功能,企业能够构建出满足自身特定需求的应用程序,从而在竞争激烈的市场环境中...

    Lotus DominoR5开发心得

    在实际开发中,还需要考虑性能优化、安全性以及可扩展性等方面的问题。例如,合理设计索引可以提升视图的检索速度;使用代理控制访问权限可以确保数据安全;而通过设计可复用的组件和模块化架构,则有利于项目的维护...

    Lotus.Domino.6.应用开发手册_1

    《Lotus Domino 6 应用开发手册》是针对Lotus Domino 6这一版本的全面技术指南,旨在帮助开发者深入理解和高效开发基于Domino平台的应用程序。Lotus Domino是一款强大的协同软件平台,由IBM公司开发,广泛应用于企业...

    Lotus Domino开发培训ppt文件

    9. **性能优化与故障排查**:了解最佳实践,以提高应用程序的性能,并学习如何诊断和解决常见的运行时问题。 10. **案例分析与实战项目**:通过实际的案例研究和项目实践,巩固所学知识,提升解决实际问题的能力。 ...

    lotus命令集lotus命令集lotus命令集lotus命令集

    3. `compact`命令:用于压缩和优化Notes数据库,释放磁盘空间并提高性能。 4. `design`命令:用于管理数据库的设计元素,例如更新、复制或导出设计。 二、 LotusScript语言 LotusScript是Lotus Notes中用于编写...

    lotus domino BS开发 获取在线用户ls版

    综上所述,"Lotus Domino BS开发 获取在线用户ls版"涉及到的技术点包括LotusScript编程、服务器日志分析、数据库操作、权限管理、性能优化以及错误处理。通过理解和掌握这些知识点,开发者可以构建出高效、安全的...

    lotus 经典编程300例

    10. **调试与性能优化** - 调试技巧:利用Notes的内置调试器进行代码调试。 - 性能监控:识别并优化影响应用性能的瓶颈。 通过《Lotus经典编程300例》中的LSSAMPL2.TXT文件,你可以找到大量实际的脚本示例,逐一...

    lotus domino BS 开发 漂亮、精美登陆界面

    综上所述,"lotus domino BS 开发 漂亮、精美登陆界面"是一个综合性的任务,涵盖从服务器配置到界面设计、从安全到性能优化等多个层面。通过深入理解这些知识点,开发者可以创建出既美观又实用的Lotus Domino Web...

    中文Lotus Domino R5 Web 高级编程 教程

    10. **应用部署与维护**:了解如何发布和更新Domino Web应用,以及日常的维护工作,包括日志分析、性能优化和故障排查。 通过《中文Lotus Domino R5 Web 高级编程 教程》,开发者不仅可以学习到Web开发的基本技能,...

    如何优化LOTUS DOMINO数据库

    通过该文档,使得读者能够了解到使用LOTUS DOMINO应用开发,数据库性能受到影响时,如何来进行数据库性能调优

    Lotus NotesSQL3.0i

    4. **性能优化**:通过优化查询处理和缓存机制,提高了数据检索速度,尤其在处理大量数据时。 5. **兼容性**:与多种操作系统和开发环境兼容,包括Windows、Linux等,以及VBScript、Java、.NET等编程语言。 6. **...

Global site tag (gtag.js) - Google Analytics