面试官:后端一次性返回10w条数据,该如何解决?

215 阅读1分钟

当面试官问你这个问题,你的第一反应是什么呢?
一、首先和面试官确认设计是否合理?

1b0002cfd128b376971547bdcfcfadfc.gif
二、主动和面试官沟通这个问题
三、如果这个需求合理,然后再寻求解决方案

8e89823c78ce7e91a7a6fd186fd33cc3.jpeg 浏览器能否处理10w条数据!

  • JS没问题
  • 渲染到DOM非常卡顿

那么针对这个渲染dom卡顿的问题,我们的解决方案如下:

1、自定义中间层

  • 自定义nodejs中间层,获取并拆分这10w条数据
  • 前端对接nodejs中间层,而不是服务端
  • 成本比较高(需要自己搭建服务器,申请服务器,测试等流程)

可以参考浅谈前后端分离与实践 之 nodejs 中间层服务(二)

2、虚拟列表

  • 只渲染可视区域DOM
  • 其他隐藏区域不显示,只用div撑起高度
  • 随着浏览器滚动,创建和销毁DOM

可以参考# 「百毒不侵(三)」结合“康熙选秀”,给大家讲讲“虚拟列表”

3、虚拟列表--第三方lib

总结:

  1. 要主动沟通,表达观点(也许考察沟通能力)
  2. 后端的问题,首先要用后端的思维去解决—中间层
  3. 虚拟列表知识折中的选择,实现复杂的效果不一定好(需要注意低配手机)