在我们设计表单时,因为一些基础数据的需要,会在表单头定义很多自动计算的域,类型如"文本/显示时计算",[email protected](..."nocache"...)等等,如果有大量这样的域存在,并且是公用设计,每次用户打开不同的单据都会再次计算和调用,势必会降低服务器性能,现讨论下,在这种需求下更好的处理方式,替换这个dblookup,并且提升性能?
------解决方案--------------------
(1)如果那些值以后不会变,或者即使变动也对已经保存的文档无影响,那就把那些字段改为创建时计算类型的字段。
(2)如果只是取一些值作其他的列表字段选项,那就可以把那个字段改为基本的文本计算字段([email protected]),然后再在它旁边加一个按钮,这个按钮里写那些查询公式,并且弹出对话框供用户选择,最后把选择的值写入那个计算字段。
(3)如果只是做业务逻辑处理时才用的值,可以等到提交表单的时候,把那些查询公式改为(或者嵌入)LotusScript代码处理。
------解决方案--------------------
dblookup我用过,有上两个又上就明显能感觉到慢了。我的方法是尽量把需要的数据组成一列。用一个dblookup读出来,然后用JS解析出所需的数据。
------解决方案--------------------
个人意见:
对不常变化的数据采用定时代理的方式存在一个地方,然后展现的时候去读这个固定的数据;
对常变化的数据,首先在打开事件中用ls写一个数组存在文档中,或者用ajax的方式在文件展现后再加载这个域;
------解决方案--------------------
frank520兄跑这里问问题了,呵呵
页面打开时具体怎么取数据,数据是实时变化还是有一定规律或者针对某个场景不会再变化,如楼上所述都有不同的处理方法。。
我理解你的描述应该类似那些新闻门户哈,每次打开都会动态获取最新的新闻那种。
给你一个我遇到过的类似的需求的解决方案
我遇到的需求是统计报表,报表的基础数据是通过卫星5秒更新一次的,数据量很大,当然查询统计不是domino去做的,但是直接放在页面打开时去统计还是会等死人的。
后面分析这些报表是按不同岗位生成的,还好总共的组合不是很多,另外客户能接受的数据延迟是几十分钟以内。
因此就用一个单独的后台程序去模拟不同岗位查询统计生成报表(权当是“爬虫”在爬数据),然后将报表结果缓存在数据库里(类似建立索引),这样每隔几十分钟去查询一次(也就是定时更新索引)。
然后不同岗位的用户打开报表界面时,实际上是直接获取已经存在的最新一次的服务端缓存数据(就是直接取索引),因此加载页面时几乎没有任何延时。另外这个页面也用js设置了定时刷新,过一段时间就重新加载最新的统计结果数据到前台。
说白了就是把元数据统计查询处理和结果数据展示分离成两个独立的过程。当然这个是有使用限制的,要看你的需求而定,呵呵
这个其实也有点类似百度的新闻搜索,百度页面就写着“以下新闻由机器每5分钟自动选取更新 新闻全文 新闻标题”,你也可以忽悠客户这个是“云计算”,哈哈哈