【问题标题】:How much data should one JSON call retrieve?一个 JSON 调用应该检索多少数据?
【发布时间】:2011-10-08 20:27:33
【问题描述】:
通过 json 调用获取项目列表时,最好使用几个小调用(根据需要获取信息)或一个包含所有数据的大调用。
例如,您有一个 json 调用来获取与特定标题关键字匹配的书籍列表。有 100 个结果。您以分页形式显示数据 - 每个“页面”有 10 个结果。拨打一个电话并获得所有结果,还是拨打每页的下 10 个电话更有效?
我想这部分取决于有多少结果。如果它是一个巨大的数字,第二个选项似乎很清楚。但是,您可以在一次通话中获得的数量有什么好的限制 - 100、1000、10,000 件物品?
【问题讨论】:
标签:
ajax
performance
json
getjson
【解决方案1】:
一般来说,每个ajax调用都有开销,减少不同调用的次数可以让性能更好..除非数据很大...
在分页中,通常最好不要从一开始就获取所有数据,因为通常用户不会浏览所有页面..所以你可以通过不移动数据来降低服务器上的负载..另一方面,如果数据相对较小或者您认为用户需要查看所有数据,请获取它们以节省不同调用的开销...
【解决方案2】:
视情况而定。
显然,您希望将带宽使用量保持在最低限度,但每个单独的呼叫也会产生开销。您必须做出一些有根据的猜测,最重要的是:您需要第 2 页到第 100 页的数据的可能性有多大?
如果很有可能(例如,在 90% 的情况下,用户会点击同一结果集的许多页面),那么我会一次性下载整个结果,否则,我会随时加载各个页面。
要记住的另一件事是延迟。每个 ajax 调用都有一定的延迟,具体取决于客户端和服务器之间的距离(在网络拓扑中,不一定是地理上的)。对于第一次加载,延迟是不可避免的,但在那之后,您需要问自己快速响应是否重要。在正常情况下,这是可以接受的,但如果您的典型用例涉及在页面之间来回切换很多,那么它可能会变得很麻烦,您可能会考虑购买 snappiness 以获得更长的初始加载时间。
如果您想加载多个页面,但结果集太大(例如,数千或数百万页面),您可能会考虑更复杂的方案,例如,下载请求的页面和接下来的 10 个页面,或者下载立即请求页面,然后在后台预取接下来的 10 个页面。