我正在使用经常多次加载相同的外部 javascript 文件的遗留代码。
我正在尝试决定是否需要找到所有加载 .js
文件的位置并阻止它们重新加载文件(如果文件已经存在),或者我是否可以简单地修改所有.js
文件以防止它们被解析已经被解析了。
例如。假设我有一个.js
名为utils.js
.
if(!utils_Loaded){
var utils_Loaded = true;
var utils = function() {
//javasript code here
};
} else {
console.log("utils.js was already loaded, so we skipped parsing it again.");
}
但是,还有大约 500 个其他包含仍在加载utils.js
中,所以实际上,HTML 看起来像这样:
<script src="/utils.js"></script> ...
<script src="/utils.js"></script> ...
<script src="/utils.js"></script> ...
<script src="/utils.js"></script> ...
<script src="/utils.js"></script> ...
<script src="/utils.js"></script> (... etc)
所以我的问题是,现代浏览器将如何处理多重加载?我假设浏览器会缓存文件,但它仍然必须再次将其拉入内存,这可能很小,直到成倍增加,因为这在代码中无处不在,数百个文件都被多次加载。
在包含点检查会更好吗?
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> ...
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> ...
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> ...
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> ...
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> ...
<script>if(!utils_Loaded){$.getScript("utils.js");}</script> (...etc)