拆分初始化负载,提升性能(四)

拆分初始化负载,提升性能

1  在初始化时加载必要的javaScript,其他的JavaScript稍后再加载;避免给用户带来响应停顿的印象。(在初始化页面时,不少函数下载了,但并未执行);

2   寻找拆分的函数

Firebug的JavaScript性能分析器能显示出在触发onload事件以前执行的函数名。咱们能够经过这个列表,把js代码拆分红一个页面初始化须要加载的文件;另外一个能够延迟加载。(须要保留醋无处理以及条件判断的代码)javascript

Doloto能够自动拆分javascript代码的系统,能够拆分红不一样的组,第一组包含初始化网页所必需的函数,剩下的在初始化函数加载完后再进行无阻塞加载。java

3 未定义标识符和竞争状态

拆分javascript代码时应该注意:避免出现未定义标识符错误;浏览器

解决方案:在延迟加载的代码与用户界面元素相关链的状况下,能够经过改变元素的展示来解决延迟代码没有加载完的问题(若是延迟代码没有加载完,用户点击了这个按钮,就会出现未定义错误);函数

在这种状况下,菜单能够包含一个“加载中...”的图标;提醒用户尚未加载完。性能

 

还有个选择是延迟加载的代码里绑定界面元素的事件处理程序。菜单会初始化为静态文本,不会执行js文件;Internet Explorer 可经过attachEvent实现;其它浏览器可采用addEventListener.google

在延迟加载的代码不与界面相关连时,可以使用桩(stub)函数解决这个问题。(stub()函数是一个与原函数名称相同可是函数体为空,或者是一些李女士代码代替原有函数内容。初始化时插入stub()函数,调用他们时,再去加载其余的javascript代码;新增的javascript代码会覆盖桩函数。若是有须要,桩函数会返回一个值,好比一个空的字符串。也能够用桩函数记录用户的请求,并在javascript代码加载完时调用相应的代码)spa

 

相关例子:google的HTTP瀑布流。事件

相关文章
相关标签/搜索