首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预加载脚本而不执行

预加载脚本而不执行
EN

Stack Overflow用户
提问于 2012-06-19 14:00:29
回答 6查看 17K关注 0票数 14

问题

为了提高页面性能,,我需要预加载脚本,这是我需要在底层页面上运行的脚本。

我想控制脚本何时被解析、编译和执行。

我必须避免脚本标记,因为它是通用渲染引擎的阻止程序 (geeko等)。

我不能使用延迟属性加载它,因为我需要控制脚本执行的时间。另外,异步属性是不可能的。

样本:

代码语言:javascript
复制
<html><head>
//preload scripts ie: a.js  without use the script
</head><body> ..... all my nice html here
//execute here a.js
</body></html>

这允许我最大限度地提高页面的呈现性能,因为浏览器将开始不加载脚本内容,并且它将同时并行地呈现页面。最后,我可以添加脚本标记,这样浏览器就可以解析、编译和执行代码。

我唯一能做到的方法就是使用隐藏的图像标记。(这是一个简化的斯托扬版本)

代码语言:javascript
复制
 <html><head>
 <img src="a.js" style=display:none;>
</head><body> ..... all my nice html here
 <script src="a.js">  
</body></html>

问题

我没有发现使用这种技术有什么问题,但是有谁知道更好的方法吗?有元预取吗?

更多信息

我使用的是requirejs,所以我尝试预加载模块代码,而不执行它,因为这段代码依赖于DOM元素。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-06-19 20:30:28

您应该查看以下链接:

http://calendar.perfplanet.com/2011/lazy-evaluation-of-commonjs-modules/

http://tomdale.net/2012/01/amd-is-not-the-answer/

以及ember.js如何使用一个名为minispade的工具,并使用ruby进行预处理,使加载、解析和运行javascript模块的过程更快。

票数 0
EN

Stack Overflow用户

发布于 2012-06-19 14:25:26

使用类似的技术,您可以使用img为Internet预加载脚本和样式表,为其他浏览器使用object标记。

代码语言:javascript
复制
var isMSIE = /*@cc_on!@*/false;

var resources = ['a.js', 'b.js', 'c.css'];

for (var i=0; i<resources.length; i++){
  if (isMSIE){
    new Image().src = resources[i];
  } else {
    var o = document.createElement('object');
    o.data = resources[i];
    document.body.appendChild(o);
  }
}

有一篇博客文章描述了这种技术,并概述了警告:预加载CSS/JavaScript而不执行

但是,为什么不像其他答案所建议的那样,只使用动态添加的脚本,这可能会带来一个更干净的解决方案,并具有更多的控制。

票数 6
EN

Stack Overflow用户

发布于 2016-08-10 13:25:40

您可以使用链接标记的prefetch属性预加载任何资源(包括javascript )。在本文撰写之时(2016年8月10日),Safari不支持它,但几乎在其他地方都支持它:

<link rel="prefetch" href="(url)">

有关支持的更多信息,请在这里:http://caniuse.com/#search=prefetch

请注意,IE9,10没有在caniuse矩阵中列出,因为微软已经停止了对它们的支持。

这里有更多的信息有更多的预加载选项,比如预制板和更多

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11102625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档