一次性获取所有数据,还是分次获取,哪个比较好,综合数据库,流量,多用户方面

plcly1 2016-05-09 11:10:50
假设有两张表的数据,前台页面是通过一次Ajax获取数据,然后自行解析好,
还是分两次,用到了再去请求。实际情况肯定是在这样的基础上复杂化的。

怎么样,在什么样的情况下,用哪种方式会比较好,还请各位有经验的解释一下
需要考虑到多用户下面,后台的流量,数据库的查询消耗,多表是否会对数据库造成堵塞
...全文
642 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
plcly1 2016-05-09
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
实际情况是啥?
我不大清楚在什么样的情况下应该选择什么样的方案
Poopaye 2016-05-09
  • 打赏
  • 举报
回复
实际情况是啥?
  • 打赏
  • 举报
回复
引用 楼主 plcly1 的回复:
需要考虑到多用户下面,后台的流量,数据库的查询消耗,多表是否会对数据库造成堵塞
在前端没有过分地取不需要的数据的前提下,这个问题主要就在于服务器端“异步处理、水平扩展”的设计是否到位。 如果是阻塞式的,当并发1000个访问时用普通的 pc 级别的机器就扛不住了,此时你把它改为异步的且精简的,可能就能在不扩展硬件的情况下提高10倍性能。如果有命中率较高的查询缓存(同时又不会有脏数据),那么又能提高20倍效率。 而倒推4、5年前的传统的做法,由于各种系统性能非常地、滥用阻塞和进程,因此他们就喜欢纠结于提高服务器硬件配置、水平扩展的思路,倾向于外力来“缓解”问题,而不是修改自己的服务系统软件。
  • 打赏
  • 举报
回复
像第二种“随便组合”着玩儿的事情,其实没有什么固定的说法。合并又合并的理由(有的人非常纠结于每一次 http 请求的代价),分开又分开的理由(有的人非常在于灵活组合、部分缓存),等等理由。 考虑细节,然后你自己权衡。关键是:保持重构能力,而不是“一棍子打死”。
  • 打赏
  • 举报
回复
比如说前端在每天早上要获取“今天的xxx员工的工作任务列表”,这个功能可能每天早上9点以前就被调用1000次,每一次调用时其实都会访问后台3个数据库的8个数据表,甚至还会包含图片url(前端随后会下载任务桌面画面截图),你说这是访问几次呢?显然不可能纠结于“访问8次”,因为后端访问几个表、几个系统,是后端的事情,前端不应该干涉。 换一个角度,假设前端不但要获取当前员工的工作任务列表,而且要获取当天发布的最新企业公告,那么是在一个请求中获得呢?还是分成两个请求? 无所谓!这第二个东西跟第一个根本没有可比性。第一个决策是要完成一个重要且不可分割的核心业务,而第二个本来就是松散随意的“玩一玩儿组合”的事情。 其关键是,你应该从前端业务流程、前端系统重构出发来看待所谓的“数据”。你不能从低级的数据存储出发来考虑“数据”设计问题。
xuzuning 2016-05-09
  • 打赏
  • 举报
回复
一次性取回足够展示的数据即可,多了无益 这就是所谓的分页 不过一次取回比分次取回的效率是要高点的
by_封爱 版主 2016-05-09
  • 打赏
  • 举报
回复
虽然不懂.不过我觉得还是用一次请求一次好吧.. 否则 假设数据有几MB.那岂不是客户端马上就挂了...
  • 打赏
  • 举报
回复
测试驱动。如果不确定,也不测试,那就“分别实现一套做法”,然后给不同的人去评估。
RubenLuLu 2016-05-09
  • 打赏
  • 举报
回复
你如果自己不能抉择,要问的话, 要贴出详细的数据量来。比如说你们网站每天有3000万的访问量,你要改或者要做的界面,可能会有多大访问量。你数据库的数据有多少多大。 才能给你进行分析。 其实通常来说,丢给数据库是最好的。让程序去解析运算,应用程序池挂掉是经常的事情。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧