0

同じ外部 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)
4

2 に答える 2

1

少し時間がかかるかもしれませんが、最善の方法はそれをきれいにすることです。ページで utils.js を 1 回読み込むことができます (あなたが言うほど使用されている場合は、そうしないのはばかげているようです)。ロードを関数に抽象化して、utils_loaded チェックを集中化することもできます。

于 2012-12-18T01:38:23.077 に答える
0

Web サーバーが Not-modified レスポンスを使用している限り、不必要な GET リクエストが大量に発生します...

ところで、ASP/PHP または同等のものを使用している場合は、行をファイルにして、include_once('tagline.js'); に置き換えることをお勧めします。

編集:興味深いサイドノート、いくつかのテストを行ったところ、chrome(23) と Internet Explorer(9) と Opera(12.11) にバグがあり、一度だけ読み込まれるようです。HTTP ヘッダー "Cache-Control: no-cache, must-revalidate" があっても :p (ただし、Firefox は除く)

于 2012-12-18T01:50:36.653 に答える