jQuery的问题
<scripttype="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jqu...
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
!window.jQuery && document.write('<script src="jquery-1.4.3.min.js"><\/script>');
这个加载的方式 运作到底是怎么样的?? 看上去 很好,可以加载谷歌的 就加载谷歌的,如果没加载成功,则加载我们本地服务器的。
但他底层呢?怎么个机制?我有这么几个疑问啊:
1. 代码应该是一行一行加载的吧?那如果要下载数据,比如js 文件,会不会发生说,
加载谷歌的代码执行了,但js正在下载,还没下载完的时候,系统就去执行下个代码了。因为还没下载完,就不存在jQuery 那么,它又去加载我服务器上的jQuery了,结果造成 他既记载了谷歌的,又加载了服务器的。。 如果会出现这种情况,那还不如直接加载服务器吧?
2.假如代码是完完全全一行一行执行的,比如第一个问题,他的情况是,加载谷歌的时候,一定是要等谷歌的加载成功了 或是 请求超时了 才会去执行下一行代码?
那针对这种情况来说, 首先 谷歌服务器顶的住吗?? 会不会出现 加载他的 比 加载自己的 还要慢- -!(虽然我看过 加载谷歌jQuery的几大优点,但我不明白底层,不太确信)
就2个问题啊 - -!应该说 到底是哪种情况,对应情况是否会产生我说的问题 - -!
</script> 展开
<script>
!window.jQuery && document.write('<script src="jquery-1.4.3.min.js"><\/script>');
这个加载的方式 运作到底是怎么样的?? 看上去 很好,可以加载谷歌的 就加载谷歌的,如果没加载成功,则加载我们本地服务器的。
但他底层呢?怎么个机制?我有这么几个疑问啊:
1. 代码应该是一行一行加载的吧?那如果要下载数据,比如js 文件,会不会发生说,
加载谷歌的代码执行了,但js正在下载,还没下载完的时候,系统就去执行下个代码了。因为还没下载完,就不存在jQuery 那么,它又去加载我服务器上的jQuery了,结果造成 他既记载了谷歌的,又加载了服务器的。。 如果会出现这种情况,那还不如直接加载服务器吧?
2.假如代码是完完全全一行一行执行的,比如第一个问题,他的情况是,加载谷歌的时候,一定是要等谷歌的加载成功了 或是 请求超时了 才会去执行下一行代码?
那针对这种情况来说, 首先 谷歌服务器顶的住吗?? 会不会出现 加载他的 比 加载自己的 还要慢- -!(虽然我看过 加载谷歌jQuery的几大优点,但我不明白底层,不太确信)
就2个问题啊 - -!应该说 到底是哪种情况,对应情况是否会产生我说的问题 - -!
</script> 展开
1个回答
展开全部
1、在主流浏览器中,在多个文件的JS的执行总是阻塞的,用简单一点的语言描述,就是同一时间,页面只会加载一个js文件。在第一个js文件加载并执行完之前,第二个要引入的js不会下载和执行
2、确实是这样的,确实要等到谷歌的jQuery加载完或者响应成功后才会执行。
但是在通常情况下,浏览器都是有缓存的,也就是请求一遍的文件(status:200 OK),再次请求时并不真正加载(status:304 Not Modified)。而在负载上可以完全信任谷歌的服务器,先不说谷歌的服务器性能如何,单是一个纯文本的文件请求对服务器的压力几乎可以忽略。
另外如果很多线上网站都使用了这个功能的话,效果会更好。也就是只要之前访问过这些网站中的一个,就会缓存了谷歌的jQuery,再访问其他网站都不需要加载(因为请求地址一样,且文件没被变更)。所以会对网站性能还是有提升的。
2、确实是这样的,确实要等到谷歌的jQuery加载完或者响应成功后才会执行。
但是在通常情况下,浏览器都是有缓存的,也就是请求一遍的文件(status:200 OK),再次请求时并不真正加载(status:304 Not Modified)。而在负载上可以完全信任谷歌的服务器,先不说谷歌的服务器性能如何,单是一个纯文本的文件请求对服务器的压力几乎可以忽略。
另外如果很多线上网站都使用了这个功能的话,效果会更好。也就是只要之前访问过这些网站中的一个,就会缓存了谷歌的jQuery,再访问其他网站都不需要加载(因为请求地址一样,且文件没被变更)。所以会对网站性能还是有提升的。
追问
请问,您说的缓存 是浏览器自带的功能吗?也就是说,别人访问过我的一个页面,加载了我的js,当他访问其他页面,又要加载这个js的时候, 浏览器就会从缓存里加载,不会重新下载过?
就是想理解下 - -!谷歌js有缓存 这个 是谷歌特有的,还是仅仅因为,别人网站也引用了谷歌,导致 用户访问过他网站,再访问我网站的时候,这个共同来自谷歌的js就自动到缓存里加载了?
追答
1、是浏览器的功能,并且所有浏览器都有这个机制并默认是打开的。
2、虽然实际的比这稍微要复杂一些,但总体上说是这样的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询