0

私は、javascript がユーザーのブラウザーにキャッシュされ、変更が本番環境に移行したときに更新されないという問題に直面していました。このサイトは複数の埋め込み iframe を使用しているため、f5 を使用するだけでは不十分でした。私が行った解決策は、必要な js ファイルのすべての変更日を取得するスクリプトを最初にロードし、次にそれらの日付を各ページの js ファイルに追加することです。各ページは次のようになります。

    <script type="text/javascript" src="get_dates"></script>//returns the dates for each file in array
    <script type="text/javascript">
        document.writeln('<script type="text/javascript" src="' + some_path + '?Mod=' + date_array[pos] + '"></script>...repeat for all scripts
    </script>

私が持っている質問は次のとおりです。

  1. mod の日付が変更されるまでスクリプトがキャッシュされているかどうかをどのように確認しますか? (更新された場合ではなく、キャッシュしたいのですが)
  2. HTMLページのキャッシュはこれにどのように影響しますか?
  3. document.writeln(() を使用するとキャッシュに影響しますか? つまり、まったく同じスクリプトを記述してもキャッシュされますか?
4

3 に答える 3

0
于 2013-03-22T14:40:42.140 に答える
0

すべての製品リリースで、js ファイルにバージョン管理を適用します。言わせて

リリース1:

<script src="source.js?v1.0"></script>

リリース 2:

<script src="source.js?v2.0"></script>

等々...

このようにして、クライアントが特定のバージョンで js ファイルをキャッシュできるようにします。

于 2013-03-22T14:42:25.193 に答える
0

mod の日付が変更されるまでスクリプトがキャッシュされているかどうかをどのように確認しますか?

有効期限を無限に設定するだけです (または、たとえば 1 年 - これで十分です)。パラメータModが変更されるたびに、新しいファイルが要求されます。

HTMLページのキャッシュはこれにどのように影響しますか?

全くない。get_datesただし、スクリプトのキャッシュは有効です。

document.writeln(() を使用するとキャッシュに影響しますか? つまり、まったく同じスクリプトを記述してもキャッシュされますか?

いいえ、影響はありません。結果 -<script>外部スクリプトを参照するノードは同じになります。

また、キャッシュされた CSS/JS ファイルをブラウザに強制的にリロードさせる方法についてもお読みください。

于 2013-03-22T14:42:35.773 に答える