我目前正在制作一种Web应用程序,其中一部分是通过动态加载和向页面添加js脚本来实现的。为此,我使用JQuery的$.getScript()
方法加载它。
我将其设置为缓存。
使用我的程序,如果脚本已经存在,则无论如何都会从看似缓存的内容中再次加载。我想知道的是,这会对网站和性能造成多大影响。新加载的脚本与现有脚本具有相同的src是否会覆盖旧脚本,还是与旧脚本一起添加的新脚本?
此外,由于我的网站是一个AJAX网站,因此可能会有来自不同页面的多个脚本最终被加载。是否有任何浏览器限制可以加载多少脚本?
答案 0 :(得分:2)
会影响网站效果。即使您的脚本在设置了过期的客户端上缓存,浏览器仍然需要解析并执行新包含的脚本。更重要的是,你很可能遇到javascript错误,因为你的脚本会覆盖以前版本已经设置的变量。 JavaScript解析和执行仍然是所有浏览器中的阻止操作,因此在处理您的文件时,您的UI将被锁定。
要回答问题的第二部分,据我所知,给定页面上的javascript文件数量没有限制。我看过有超过200个javascripts的页面没有任何例外。
答案 1 :(得分:1)
我认为Ilya提供了一些值得考虑的重点,我认为这可以回答您的具体问题。但是,如果您要完成的是重新运行$(document).ready()
处理程序,则可以执行以下操作:
(function(){
var myreadyfunction = function(){
$('#affected').toggleClass('blue');
};
$(document).ready(myreadyfunction);
$(document).ready(function(){
$('button').click(myreadyfunction);
});
})();
我已将其范围限定为匿名(function(){})();
以避开全局范围,因此您可能需要考虑如果您需要从该范围外访问该函数。但这可以让你大致了解我在说什么。