JavaScript的加载和运行
2015-08-05 10:01
555 查看
JavaScript阻塞是指当JavaScript运行是你其他的事情不能被浏览器处理。这是由于大多数浏览器使用单进程处理UI更新和JavaScript运行等多个任务,而同一时间只能有一个任务被执行,所以JavaScript运行了多上时间,那么浏览器空闲下来响应用户输入之前的等待时间就有多长。也就是说<script>标签的出现使整个页面因脚本解析和运行而出现等待。
有几种方法可以减少JavaScript对性能的影响:
(1)将脚本放在底部。(将所有<script>标签放置在页面的底部,紧靠body关闭标签</body>的上方。此法可以保证页面在脚本运行之前完成解析)
(2)将脚本成组打包。页面的<script>标签越少,页面的加载速度就越快,响应也更加迅速。不论外部脚本文件还是内联代码都是如此。(每个 HTTP请求都会产生额外的性能负担,下载一个100KB的文件比下载四个
25KB的文件要快。)
(3)延期脚本(使用deffer属性,任何带有defer属性的<script>元素在 DOM加载完成之前不会被执行,不论是内联脚本还是外部脚本文件)
(4)动态脚本元素(script元素通过标准DOM函数创建,新的<script>元素加载一个file.js源文件。此文件当元素添加到页面之后立刻开始下载。此技术的重点在于:无论在何处启动下载,文件的下载和运行都不会阻塞其他页面处理过程。)——可以跨浏览器,而且简单易用,最常用的模式
(5)XHR脚本注入(技术首先创建一个XMLHttpRequest(XHR)对象,然后下载 JavaScript文件,接着用一个动态<script>元素将 JavaScript代码注入页面;优点:可以下载不立即执行的JavaScript代码,同样的代码在所有现代浏览器中都不会引发异常;缺点:JavaScript文件必须与页面放置在同一个域内,不能从
CDNs下载,所以大型网页通常不采用XHR脚本注入技术)
有几种方法可以减少JavaScript对性能的影响:
(1)将脚本放在底部。(将所有<script>标签放置在页面的底部,紧靠body关闭标签</body>的上方。此法可以保证页面在脚本运行之前完成解析)
(2)将脚本成组打包。页面的<script>标签越少,页面的加载速度就越快,响应也更加迅速。不论外部脚本文件还是内联代码都是如此。(每个 HTTP请求都会产生额外的性能负担,下载一个100KB的文件比下载四个
25KB的文件要快。)
(3)延期脚本(使用deffer属性,任何带有defer属性的<script>元素在 DOM加载完成之前不会被执行,不论是内联脚本还是外部脚本文件)
(4)动态脚本元素(script元素通过标准DOM函数创建,新的<script>元素加载一个file.js源文件。此文件当元素添加到页面之后立刻开始下载。此技术的重点在于:无论在何处启动下载,文件的下载和运行都不会阻塞其他页面处理过程。)——可以跨浏览器,而且简单易用,最常用的模式
(5)XHR脚本注入(技术首先创建一个XMLHttpRequest(XHR)对象,然后下载 JavaScript文件,接着用一个动态<script>元素将 JavaScript代码注入页面;优点:可以下载不立即执行的JavaScript代码,同样的代码在所有现代浏览器中都不会引发异常;缺点:JavaScript文件必须与页面放置在同一个域内,不能从
CDNs下载,所以大型网页通常不采用XHR脚本注入技术)
相关文章推荐
- JavaScript为unicode编码转换为中文(转)
- 编写高质量JavaScript代码
- 20个最常用的javascript方法函数
- JSP
- JavaScript使用FileSystemObject对象写入文本文件内容的方法
- jsPlumb,适用于开发Web上的图表、建模工具
- json解析过程中遇到net.sf.json.JSONException: There is a cycle in the hierarchy!问题
- js如何实现点击标签文字,文字在文本框出现
- Js添加到HTML
- JavaScript实现删除,移动和复制文件的方法
- 06-js禁止回车提交表单
- Emberjs搜索
- C#Json数据反序列化为Dictionary并根据关键字获取指定的值
- Newtonsoft.Json 方法使用()
- js学习一:简单的鼠标移动和移出效果案例
- 深入理解javascript之防篡改对象
- JS 返回上一步(退回上一步上一个网页)
- JavaScript语法
- 用JS做图片轮播
- js深入理解(二)