使用Modernizr.load(yepnope.js)导致我的脚本被请求两次的原因是什么

Phi*_*tts 20 javascript dynamic-script-loading modernizr yepnope

我使用yepnope.js动态加载javascript文件,我注意到我的脚本似乎根据Firebug和Webkit Inspector加载了两次.

问题是在Firebug的Net面板(Firefox 4最新版)中,他们的反应是200,而不是304.它似乎比Chrome慢.

我上传了这个显示问题的视频.您可以看到文件jquery-1.6.1.min.jslibs.js加载的时间.

我用来执行此操作的代码如下,简化:

Modernizr.load({
                load: ['jquery-1.6.1.min.js', 'libs.js'],
                complete: function () {
                    console.log("loaded");
                }
});
Run Code Online (Sandbox Code Playgroud)

Modernizr.load()yepnope().

Nat*_*ell 25

在他们的文档中有关于此的说明:

来自http://yepnopejs.com/

我在开发工具中看到两个请求,为什么要加载两次?

根据您的浏览器和服务器,这可能意味着几件不同的事情.由于yepnope如何工作的性质,每个文件都有两个请求.第一个请求是将资源加载到缓存中,第二个请求是执行它(但由于它在缓存中,它应该立即执行).只要第二个请求被缓存,看到两个请求是很正常的.如果您注意到第二个请求未被缓存(并且您的脚本加载时间加倍),那么请确保您发送了正确的缓存标头以允许缓存脚本.这对于yepnope至关重要.没有启用适当的缓存,它将无法工作.我们实际测试以确保在我们的测试套件中没有加载两次,所以如果您认为我们的浏览器中可能存在关于双重加载的错误,我们建议您运行测试套件以查看双重加载测试是否通过.

  • 之后我才意识到这一点,请原谅我的无知,并感谢你的回答. (2认同)
  • 我仍然不明白为什么他们必须这样做.Facebook的bootloader事情没有加载文件两次这样的问题.. (2认同)