标签:
杂谈 |
分类: 技术 |
用户需要使用很多的动态性能,往往是通过大量的临时域存放HTML。有的时候,为了解决大字符串的存储问题,而使用多个拆分域。这样做的缺点,是当数据量不大的时候,无用的数据会增大POST的长度。
该问题出现时,往往对表单提交后无法保存,在控制台输出“Web Server: Invalid POST
Request
Exception”。显然服务器将接收到的POST数据过滤,没有到达实际的应用层,因此正常需要运行的代理没有有效运行。
关于POST长度的配置在服务器配置文档,“Internet协议”下的“Domino
Web引擎”中的“POST数据”节(说明中参数单位为KB,实际上是以字节为单位)。在HTTP选项卡启用记录后,跟踪错误源获得详细错误的数据发现HTTP响应代码为500。当POST长度为30000时,使用TamperIE获取原始的POST数据,发现大小为32700大于该限制继而发生错误。一个可行的方法是将该POST数据扩大。POST数据不能无限放大,如果POST大数据会影响高峰时期的服务器性能、增加系统开销与网络负荷。
除了扩大该参数上限外,我们还可以进一步分析POST数据剔除一些与最终存储文档无关的数据,从而压缩POST字节大小。POST数据是根据HTML中的DOM控件与数据产生的。在DOM中动态地删除无用的控件,将会减少POST数据大小。
在将所有需要保存的数据经过处理后,将无用的数据开始进行动态删除,然后再提交表单。
西祠登陆用户可以登陆讨论版讨论并下载相关资源。
示例:
使用DOM方法动态创建表格及输入控件,多行输入控件按“控件名_行号”标记。在提交表单前,将该数据通过分隔符放在多值域中。在后台WebQuery
Save代理中处理为数组保存。保存的数据前台展现通过使用多个域存放HTML(编辑与浏览两种模式),该数据通过代理输出不需要保存。
在提交表单后的保存操作中,可以将动态绘制的临时输入框与前台展现的临时域动态删除,大文本拆分的串没有数据也可以删除,从而缩减POST数据大小。实验结果减少约15KB数据。
var MonthlyTargetInputId=new Array(10);
MonthlyTargetInputId[0]="MonthlyTargetContent";
MonthlyTargetInputId[1]="MonthlyTargetEvaluateWei
MonthlyTargetInputId[2]="MonthlyTargetAdjustWeigh
MonthlyTargetInputId[3]="MonthlyTargetPerformance
MonthlyTargetInputId[4]="MonthlyTargetProgressSta
MonthlyTargetInputId[5]="MonthlyTargetSelfMark";
MonthlyTargetInputId[6]="MonthlyTargetDepartAdjus
MonthlyTargetInputId[7]="MonthlyTargetFirstAudit";
MonthlyTargetInputId[8]="MonthlyTargetPrincipalAu
MonthlyTargetInputId[9]="MonthlyTargetCheck";
var MonthlyKeyTargetInputId=new Array(10);
MonthlyKeyTargetInputId[0]="MonthlyKeyTargetContent";
MonthlyKeyTargetInputId[1]="MonthlyKeyTargetWeightIt
MonthlyKeyTargetInputId[2]="MonthlyKeyTargetBasicPoi
MonthlyKeyTargetInputId[3]="MonthlyKeyTargetFightPoi
MonthlyKeyTargetInputId[4]="MonthlyKeyTargetMethod";
MonthlyKeyTargetInputId[5]="MonthlyKeyTargetProgress
//MonthlyKeyTargetInputId[6]="MonthlyKeyTargetSelfMark
MonthlyKeyTargetInputId[6]="MonthlyKeyTargetDepartAd
MonthlyKeyTargetInputId[7]="MonthlyKeyTargetFirstAud
MonthlyKeyTargetInputId[8]="MonthlyKeyTargetPrincipa
MonthlyKeyTargetInputId[9]="MonthlyKeyTargetCheck";
var MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
MonthlyBasisManageInputI
var OtherInputId=new Array(9);
OtherInputId[0]="OtherContent";
OtherInputId[1]="OtherWeightItem";
OtherInputId[2]="OtherMethod";
OtherInputId[3]="OtherProgressStatus";
OtherInputId[4]="OtherSelfMark";
OtherInputId[5]="OtherDepartAdjust";
OtherInputId[6]="OtherFirstAudit";
OtherInputId[7]="OtherPrincipalAudit";
OtherInputId[8]="OtherCheck";
//初始化数据
function initData()
{
}
function destroyData()
{
}
在表单的onSubmit事件中添加代码:
initData();
destroyData();
return true;
相关DOM的函数放入一个JS头文件,关于该头文件的其他函数详见前期技术版块发布的文章:
function setGroupValue(objCount,columnCount,arrayOfInputId)
{

加载中…