我正在处理经常加载相同外部javascript文件的遗留代码。
我正在尝试确定是否需要查找加载 .js
文件的所有位置,并阻止它们重新加载文件(如果已存在),或者我是否可以获取远离简单地修改所有.js
文件,以防止它们被解析(如果它们已经被解析)。
例如。假设我有一个名为.js
的{{1}}文件。
utils.js
但是,还有大约500个其他包含仍在加载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.");
}
,因此实际上,HTML看起来像这样:
utils.js
所以我的问题是,现代浏览器将如何处理多次加载?我假设浏览器会缓存该文件,但它仍然需要再次将其拉入内存,这可能很小,直到成倍增加,因为这在代码中发生了无处不在,数百个文件全部被加载多次。
在包含点检查时会更好吗?
<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)
答案 0 :(得分:1)
可能需要一些时间,但最好的办法就是清理它。您可以在页面上加载一次utils.js(如果它的使用方式与您说的那么多,那么它似乎很傻)。您还可以将加载抽象为函数,以帮助集中化utils_loaded检查。
答案 1 :(得分:0)
只要您的Web服务器使用未修改的响应,就会有一堆不必要的GET请求...
btw如果您使用的是ASP / PHP或者相同,我建议将该行放入文件中并替换为include_once('tagline.js');
编辑:有趣的旁注,做了一些测试,似乎Chrome(23)和Internet Explorer(9)以及Opera(12.11)中的一个错误使它只加载一次;甚至使用HTTP标头“Cache-Control:no-cache,must-revalidate”:p(但不是firefox)