var.child.Cars1 = { name:null,operation:0,selected : false}
现在在上面的数组中,selected属性表示checkBox的check / uncheck状态,我使用json.stringify将数组上面的数据发布到Web服务(WCF)作为字符串.
上面的数组包含2000 – 4000条记录,现在用户可以选中/取消选中复选框.
现在考虑上面数组中有4000条记录,其中有2000条记录被检查,2000条记录未经检查.在我的网络服务中,我只处理那些被检查的记录.我删除所选值为false的记录.
现在由于4000记录它是一个巨大的json字符串,因此我从Web服务端得到错误:
Error : (413) Request Entity Too Large
现在我没有过滤掉选择为flase的记录的原因是因为它会在客户端浏览器上产生大量开销,甚至可以挂起浏览器,所以我现在在服务器端这样做.
所以我的问题是我应该在客户端筛选出被选为false的记录,然后仅发布2000条记录或者我正在做的是正确的方式.
我在脑海中有一些问题,发布如此巨大的json字符串将再次需要一些时间并过滤掉选择为false的记录也将在浏览器上投入大量开销.
所以我不确定我做错了什么.
任何人都可以指导我这个???
解决方法
以下是一些可能性:
您是否考虑过分页请求?这将允许您根据需要异步加载客户端上的数据,从而防止请求花费太长时间,提高网站的响应能力,并减少客户端和服务器内存上的任何负担.您可以在用户滚动时抢先加载数据,如果需要,如果过程耗时太长,则向用户提供某种娱乐/反馈,因此他们知道正在加载更多数据.
您是否考虑过将属性的名称更改为更短,更少描述性,从而减少对象本身的占用空间?例如:
您当前的型号:
{name:null,operation:0,selected:false}
简化模型:
{n:null,o:0,s:false}
像这样的方法会使得阅读JSON本身变得更加困难,但JSON并不仅仅是为了让人们阅读,而是用于序列化数据;虽然,这可以通过记录您的模型来克服.这样做可能有助于将发送的数据减少多达30%.
我不能提供一个完整的解决方案,因为你将不得不问自己很多关于你想要实现什么,谁将消费数据的难题,以及如何实现这一目标的最佳方式.
此外,我强烈考虑质疑为什么一个过程需要用户同时与2000个记录进行交互.我并不是在批评,而是说你需要仔细研究你想要实现的业务流程,因为可能存在严重的重复性问题,对用户的压力以及更多,这将极大地影响你的应用程序对最终用户有效且有用.作为一个例子,有没有办法可以将任务分解为更小,更乏味的块,以便最终用户在2小时内不会盯着4000个复选框?
这可能不是您正在寻找的答案,因为它会打开大量的其他问题,但希望它能帮助您开始制定有助于确定最终答案的问题.