(1)head标签中会包含一些引用外部文件的代码,从开始运行就会下载这些被引用的外部文件
当遇到script标签的时候
浏览器暂停解析(不是暂停下载),将控制权交给JavaScript引擎(解释器)
如果<script>标签引用了外部脚本,就下载该脚本,否则就直接执行,执行完毕后将控制权交给浏览器渲染引擎
(2)当head中代码解析完毕,会开始解析body中的代码
如果此时head中引用的外部文件没有下载完,将会继续下载
浏览器解析body代码中的元素,会按照head中声明一部分样式去解析
如果此时遇到body标签中的<script>,同样会将控制权交给JavaScript引擎来解析JavaScript
解析完毕后将控制权交还给浏览器渲染引擎。
当body中的代码全部执行完毕、并且整个页面的css样式加载完毕后,css会重新渲染整个页面的html元素。
(3)按照之前的描述,<script>写到body标签内靠后比较好,
因为JavaScript 会操作html元素, 如果在body加载完之前写JavaScript 会造成JavaScript 找不到页面元素
但是我们经常将<script>写到head中,body中不会有大量的js代码,body中的html代码结构会比较清晰
window.onload: 等待页面中的所有内容加载完毕之后才会执行
$(document).ready(): 页面中所有DOM结构绘制完毕之后就能够执行
可以这样理解:window.onload 和 $(document).ready()/$(function(){})相当于 写在body 内 最靠后的<script>代码段
降低页面的比重1去除不必要的空白和注释, 将inline的script和css放到外部文件中。 HTML Tidy这个工具可以用来自动的去除空白。还有一些其他的工具能够压缩javascript代码,比如将比较长的标志符换成短的,通过这种方式,尽量的减少页面的比重。
减少文件的数量
将少一个webpage被加载时所需要的下载的文件数量,有些browser具有cache的设置,如果一个css或是javascript文件没有被改变的话,它就不会再去下载一遍。通过这样的设置,也可能减少文件下载的数量。
减少Domain查询
对于每个Domain的查询,都需要去检索DNS, 过多的Domian查询会导致页面加载速度变慢。
缓存重用的内容
确保所有可以被缓存的数据都已被缓存,并在恰当的时间过期。
尤其要注意的是:Last-Modified header,它会记录下静态最近被改动的时间,而对于大多数web服务器来讲,都会默认的为静态文件提供这样的头。
js:避免使用eval或者是函数构造器
js解释器在执行代码前,会进行类似预编译的操作,首先会创建一个当前执行环境下的活动对象,并将那些用var声明的变量设置为活动对象的属性,但是此时这些变量的赋值都是undefined, 并将那些以funciton定义的函数也添加为活动对象的属性,而他们的值真是函数的定义。
使用eval时,传递给它的string内容,因为无法进行预编译,所以解释器也无法丢代码进行优化。这样的结果就是eval的效率相当低。
同时,在所以可以用string代替函数的地方,都不要用string来代替,而应该直接传一个函数过去。
js: 尽量使用局部变量而非全局变量
局部变量的查找速度比全局变量高出许多。
使用ajax。
参考代码:
$(function(){
$.ajax({
type:"POST", url:"LoginLoadArticle.ashx",
data: "type="+escape("最新公告") ,
success:function(msg){
$(".gonggao").html(msg)
}, error:function(XMLHttpRequest, textStatus, thrownError){}})
})
扩展资料:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
text:返回纯文本字符串。
beforeSend:要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数。