jquery取数据的过程如何优化响应时间?
现在页面都是前后台分离用ajax取数据,传统上我们是这样写:
$(function(){//待页面加载后再执行,保证dom就绪
$.get("url",function(data){
//异步请求拿到数据后,对dom赋值。。。
});
});
这样的问题是慢!需要等待页面加载完(包括各种js),再加载数据再对dom赋值,有明显的等待时间。
如果这样直接下载:
$.get("url",function(data){
//异步请求拿到数据后,判断页面是否准备好,再赋值
$(function(){//待页面加载后再执行,保证dom就绪
//为dom赋值。。。
});
});
这样可以吗?但一个页面可能有多个请求这又怎么处理?有什么标准的写法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这样写的前提是,请求不会挂掉。
jQuery建议把逻辑写在
$()
或者$(document).ready
的回调函数里,是为了防止一些新手在 DOM 没就绪之前就操作 DOM ,然后就会各种错,所以只要姿势足够,或者这段代码不需要操作 DOM ,这个$()
其实是不必要的。虽然浏览器的渲染线程和网络线程是独立的,但是:
如果把异步请求前置了,它可能会阻塞其他资源的加载,其他资源又阻塞了文档解析,不但没有加速的效果,甚至会起到反作用。
所以要解决首屏展示的数据延迟的问题,应该从优化静态资源方面入手:
解决了上面这些问题,再去解决数据接口的延迟。
上面第1、3种优化方案同样适用于接口,比如将多个接口合并就可以减少请求数量;一些长期不更新且没有加密要求的接口用 get 方法,再变态一点的可以启用本地存储,事实上我还真这样干过,每次初始化先用本地数据糊一下,等拿到新的数据再更新。
以上方法只能从网络角度优化,对于延迟的原因也需要对症下药。
题主听说过朝三暮四的故事么?不改进速度,只是调整顺序没有任何意义啊。
关于优化响应时间的文章很多,找来看看,有的放矢。
promise