我正在设计/开发一家网络商店,正在思考处理几兆字节产品项目的透明负载的最佳方式。看来 AJAX 的异步位并不意味着并行,所以我必须在这里发挥一点创意。
我不只是将大量数据拉下来,而是考虑将其分成包含 50->100 个项目的页面,并允许浏览器有一些时间来处理任何内部消息。
加载器将拉下一页数据 - 向自身触发一个自定义事件以获取下一页。理论上,如果浏览器有其他消息来处理此事件,则会在它们后面排队,允许浏览器执行它必须执行的任何其他操作。速度有所损失 - 但用户体验更流畅。
冲洗并重复。
添加一些烟雾和镜子工程 - 加载图标或类似的东西 - 以防止用户注意到任何延迟,我应该是对的。
在我深入研究听起来像是一段有趣的代码之前,有人能想到一种更好的方法来以尽可能流畅和友好的方式提取大量数据吗?我是一位古老的程序员 - 但 JavaScript 对我来说有点陌生。
我是不是在重新发明轮子 - AJAX 已经完成了这一切 - 而我只是不知道?
最佳答案
有两种方法可以改善这种情况:
a) 减少来自数据库的数据 - 即,如果有一些未使用的信息,则无需加载它。此外,如果存在不可更改的数据,您可以缓存它并仅在开始时请求一次
b) 仅加载您需要显示的信息 - 这就是您考虑的方式,除了您想要自动触发新数据加载这一事实。或者至少我是这么理解的。我建议尽可能减少 ajax 请求,并仅在用户需要更多数据时才创建新的请求。例如,如果用户停留在第 1 页(共 20 页),则无需触发加载第 3 页和第 4 页。加载第 2 页可能是个好主意,这样用户可以快速切换。
关于JavaScript 自定义事件处理程序策略建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18958629/