是同步还是异步加载脚本和图像?

时间:2012-08-01 13:51:41

标签: javascript html

这是一个非常基本的问题 - 在网页中同步或异步加载的脚本和图像(例如ajax请求中发生的情况)?我正在谈论包含常规html方式的图像和脚本 - 和

我只是想知道浏览器如何对包括相对较大的文件(例如jQuery(我最后检查的大约2mb)或其他大型库或大图像)做出反应,我应该担心这会让我的用户在连接时卡住几秒钟到我的网站?我特别想了解jQuery开销,因为我正在考虑将它用于一个小项目...

5 个答案:

答案 0 :(得分:6)

图像是异步加载的,可能是同时加载的。不要打扰他们,只要让它们尽可能小,并使用CSS sprites。

脚本正在阻止,即您无法在下载前一个脚本之前加载下一个脚本。这是可以理解的,因为可能存在一些脚本间依赖性。

您通常要做的是将所有JavaScript资源压缩和缩小为一个文件,该文件包含在页面底部。通过这种方式,页面可以很好地呈现,从而提供良好的用户体验,并在最后加载脚本。毕竟,您通常在DOM ready事件之前运行脚本。

BTW jQuery minified仅约93K。如果您使用上面的链接,它很可能会一劳永逸地在浏览器中缓存。

答案 1 :(得分:1)

  • 服务器发送DOM后,浏览器就会显示 网站。

  • 图像被异步加载,因此会出现大图像 慢慢地慢慢连接

  • jQuery是32kb

  • 脚本逐个加载,而不是同时加载

答案 2 :(得分:1)

要添加到已经说过的内容,那里有 脚本加载库,可以同时加载脚本,但仍然确保它们出现执行。我曾经使用并建议的是head.js。它提供了一个非常简单的界面(下面是从图书馆的网站复制的):

head.js("/path/to/jquery.js", "/google/analytics.js", "/js/site.js", function() {
   // all done
});

此外,澄清关于jQuery大小的混淆......从版本1.7.2开始:

  • 未经压缩和未压缩, 275 KB
  • 缩小 95 KB
  • 缩小并压缩它大约 34 KB (这是您在jQuery网站上看到的值)。

最后一个选项是您在生产网站上实际使用的选项;所以你担心用户需要下载一个2 MB的库可以休息。

答案 3 :(得分:0)

脚本是同步的(但它们可能包含异步代码)
图像加载是异步的

答案 4 :(得分:-1)

我认为HTML的正常行为是同步加载所有文件(图像和脚本)。

虽然可以编写一个小型内联JavaScript来异步加载文件。