Javascript 处理包含许多脚本文件的页面
我们的项目包含许多页面,最多有20个选项卡,每个选项卡使用不同的脚本。所有脚本文件都在Javascript 处理包含许多脚本文件的页面,javascript,performance,Javascript,Performance,我们的项目包含许多页面,最多有20个选项卡,每个选项卡使用不同的脚本。所有脚本文件都在中引用,并在第一页加载。现在我们有了性能问题,因为打开页面时页面上的脚本太多(每个选项卡上大约有2k行JavaScript)。问题是,在很多情况下,用户需要使用2-3个选项卡,因此超过60%的代码没有被使用。因此,我们需要任何脚本延迟加载解决方案来简化页面。由于每个选项卡的HTML都是按需加载的,因此我们可以在每个选项卡中放置引用,这将提供一个良好的工作解决方案。但我敢肯定,在中包含不包含的引用是一种糟糕的风格
中引用,并在第一页加载。现在我们有了性能问题,因为打开页面时页面上的脚本太多(每个选项卡上大约有2k行JavaScript)。问题是,在很多情况下,用户需要使用2-3个选项卡,因此超过60%的代码没有被使用。因此,我们需要任何脚本延迟加载解决方案来简化页面。由于每个选项卡的HTML都是按需加载的,因此我们可以在每个选项卡中放置
引用,这将提供一个良好的工作解决方案。但我敢肯定,在
中包含不包含的引用是一种糟糕的风格。所以我想知道,还有别的解决办法吗?像我们这样的大项目是如何解决这些问题的?任何建议都会有帮助。
提前谢谢 jQuery对于这个解决方案有很好的功能:
$.getScript("my_lovely_script.js", function(){
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});
默认情况下,这是不缓存的。我在jQuery网站上寻找了一个解决方案,该解决方案声明用于缓存脚本include
jQuery.cachedScript = function(url, options) {
// allow user to set any option except for dataType, cache, and url
options = $.extend(options || {}, {
dataType: "script", //Note this
cache: true, //Enable caching
url: url
});
// Use $.ajax() since it is more flexible than $.getScript
// Return the jqXHR object so we can chain callbacks
return jQuery.ajax(options);
};
// Usage
$.cachedScript("URL HERE").done(function(script, textStatus) {
console.log( textStatus );
});
jQuery对于这种解决方案有很好的功能:
$.getScript("my_lovely_script.js", function(){
alert("Script loaded and executed.");
// here you can use anything you defined in the loaded script
});
默认情况下,这是不缓存的。我在jQuery网站上寻找了一个解决方案,该解决方案声明用于缓存脚本include
jQuery.cachedScript = function(url, options) {
// allow user to set any option except for dataType, cache, and url
options = $.extend(options || {}, {
dataType: "script", //Note this
cache: true, //Enable caching
url: url
});
// Use $.ajax() since it is more flexible than $.getScript
// Return the jqXHR object so we can chain callbacks
return jQuery.ajax(options);
};
// Usage
$.cachedScript("URL HERE").done(function(script, textStatus) {
console.log( textStatus );
});
是的,如果您没有在
标记中引用脚本,那么您将丢失缓存(我想!),这通常会影响性能。不过,这里主要关心的是,每个选项卡是否真的需要一个单独的javascript文件?它们各自有不同的功能吗?你有没有试过在你的javascript文件上运行一个最小化程序,看看你能得到多小的文件?更正:不需要在头部缓存,只需要在
标记中使用src
属性。如果您可以在正文中引用,那么do itlogic对于选项卡来说确实是不同的,并且无法合并到单个文件中,因为脚本用于不同的区域。最小化帮助但不太好是的,如果在
标记中没有引用脚本,那么就会丢失缓存(我想!),这通常会影响性能。不过,这里主要关心的是,每个选项卡是否真的需要一个单独的javascript文件?它们各自有不同的功能吗?你有没有试过在你的javascript文件上运行一个最小化程序,看看你能得到多小的文件?更正:不需要在头部缓存,只需要在
标记中使用src
属性。如果您可以在正文中引用,那么do itlogic对于选项卡来说确实是不同的,并且无法合并到单个文件中,因为脚本用于不同的区域。最小化帮助,但不会太多在浏览器中缓存如何?加载了getScript
的脚本是否缓存?@DotNETNinja我编辑了我的答案,这就是你要搜索的吗?如果您需要了解更多信息,请查看,如果您无法理解,请发表评论。很好的代码片段,谢谢!我将等待任何其他解决方案,并接受您的解决方案,如果您不愿意,那么在浏览器中缓存如何?加载了getScript
的脚本是否缓存?@DotNETNinja我编辑了我的答案,这就是你要搜索的吗?如果您需要了解更多信息,请查看,如果您无法理解,请发表评论。很好的代码片段,谢谢!我将等待一点,等待任何其他解决方案,并接受你的,如果不愿意