12

これはキャッシュのせいだと思いますが、よくわかりません。

私が抱えている問題は、ファイルを変更して保存すると、しばらくの間ブラウザで更新されないことです。これは、ファイルがブラウザにキャッシュされていて、以前のバージョンが読み込まれているためだと思います。私はテストしているので、ファイルを頻繁に変更するので、これを無効にする方法を理解する必要があります。

ウェブ上でこれを検索しようとしましたが、私が探していたものを実際に見つけることができませんでした。

現在ローカルホストでこれを実行していますが、変更するファイルはHTMLだけです

編集:

新しいブラウザで開くと新しいバージョンのページが読み込まれるため、ファイルに問題がないことはわかっています。

テストを行うためにChromeを使用しようとしています。

EDIT2:

また、変更されるファイルはrequire.jsを介してロードされるため、URLに入力された直接ファイルではありません

4

7 に答える 7

7

Chromeデベロッパーツールを開いて設定ボタン(デベロッパーツールパネルの右下隅にある歯車のアイコン)を押すと、ポップアップに[キャッシュを無効にする]オプションが表示されます。

于 2013-01-01T22:14:37.843 に答える
7

EDIT2の質問で、require.jsを使用しているとおっしゃっていました。ブラウザのキャッシュを無効にしたくない場合は、RequireJSconfigurlArgsオプションを設定できます。Require.jsには、キャッシュされているファイルを無効にするために使用できる構成オプションがあります。

Require.jsドキュメントからの抜粋は次のとおりです。Require.jsurlArgs

urlArgs:RequireJSがリソースをフェッチするために使用するURLに追加される追加のクエリ文字列引数。ブラウザまたはサーバーが正しく構成されていない場合にバストをキャッシュするのに最も役立ちます。キャッシュバスト設定の例

urlArgs:urlArgs: "bust =" +(new Date())。getTime()

開発中にこれを使用すると便利な場合がありますが、コードをデプロイする前に必ず削除してください。

これがどのように見えるかの例です:

requirejs.config({
    urlArgs: "bust=" + (new Date()).getTime(),  
    paths: {
        "jquery": "libs/jquery-1.8.3",
        "underscore": "libs/underscore",
        "backbone": "libs/backbone"
    },
});

require(["jquery", "underscore", "backbone"],
    function ($, _, Backbone) {
        console.log("Test output");
        console.log("$: " + typeof $);
        console.log("_: " + typeof _);
        console.log("Backbone: " + typeof Backbone);
    }
);
于 2013-01-06T01:45:00.773 に答える
1

私がこの種の疑問を持っているとき、私がすることは、URLの最後にランダムなパラメータを追加することです。

例:

http://localhost/foo/bar.html?randomParam=873738424

これにより、ブラウザが応答をキャッシュする可能性が無効になります。これは非常に簡単なソリューションであるため、手動またはプログラムで実行できます。

通常、認識されないパラメータがある場合でも、アプリケーションでエラーが発生することはありません。

于 2013-01-01T22:02:55.173 に答える
1

ローカルWebサーバーではなくファイルシステム上のスクリプトをチェックする場合は、location.host(この場合は空の文字列)をチェックするのではなく、これを使用します。

var require.urlArgs = (window.location.protocol == 'file:') ? 'bust='+new Date().getTime() : ''
于 2013-05-28T16:50:23.790 に答える
0

無視: r.jsでコンパイルする場合、関数は許可されていないようです。:(

BarDevのピギーバッキング、次のようなものはどうですか?

requirejs.config({
    urlArgs: (function(){
        return (location.host=='localhost') ? 'bust='+(new Date().getTime()) : '';
    }())
});

これで、そのコードをそのままにしておくことができ、本番環境で誤ってキャッシュを破壊する心配はありません。

于 2013-02-26T18:51:56.310 に答える
0

ヘッドセクションに含める

<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
于 2013-01-01T22:02:56.763 に答える
0

ページをリロードする前に、ブラウザのキャッシュをクリアしてみてください(ctrl + shift + delete)。

Shiftキーを押しながら再読み込みをクリックして、ファイルを更新し、キャッシュを使用しないようにすることもできます。

于 2013-01-01T22:13:28.107 に答える