web-dev-qa-db-ja.com

JavaScriptファイルが何をしても更新されない

外部JavaScriptファイルがあり、FireFoxかChromeか、すべての閲覧データが消去されたかどうか、何があっても更新されません。ファイルのバックアップを作成したときにsomethingが発生したと思います。名前の末尾に「_thedate」を追加しただけです。次に、名前を付けて保存して元の名前に戻します。

ファイルの名前を変更したり、スクリプトをPHPページに追加したりしない場合を除きます。 、混雑します。

誰もがこれに対する解決策を知っていますか?

47
Tarik

同じファイルにリンクしていて、その同じファイルを編集していると確信していますか?

一部のブラウザでは、CTRL F5を使用して強制的に更新できます。

Firebugには「ブラウザキャッシュを無効にする」というネットタブもあります

更新2017:

Google Chromeデバッガーを使用する場合、それは同じです。[ネットワーク]セクションに移動し、[DevToolsが開いている間はキャッシュを無効にする]がオンになっていることを確認します。デバッガパネル。

また、JavaScriptファイルをリンクするときは、

_<script src="my-js-file.js?v=1"></script>
_

または、_v=2_など、間違いなくファイルを更新する場合。または、コンソールに移動してDate.now()を実行し、_1491313943549_などのタイムスタンプを取得して、

_<script src="my-js-file.js?t=1491313943549"></script>
_

いくつかの構築ツールは自動的にそれを行います、またはそれを行うように構成することができ、それを次のようにします:

_<script src="main.742a4952.js"></script>
_

これは基本的にキャッシュを無効にします。

_v=2_または_t=1491313943549_、または_main.742a4952.js_を使用すると、ユーザーにとって間違いなく新しいバージョンを取得できるという利点もあります。まあ。

76

タグに「?2」を追加してみませんか?

<script src="a.js?2"></script>

サーバーは「?2」の有無にかかわらず同じファイルを返す必要がありますが、ブラウザはそれを別のファイルと見なして再ダウンロードする必要があります。ファイルが変更されるたびに、このクエリ文字列を変更できます。

適応: http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

15
nsdel

この問題は以前にもありましたが、非常にイライラしますが、回避策を見つけました。 jsファイルの完全なアドレス(つまり、yourhost.com/javascript.js)を入力してロードします。おそらく、古いバージョンがロードされます。次に、f5を押してそのページを更新すると、新しいバージョンがロードされます。キャッシュ内のjsファイルが更新され、予想どおりにコードが実行されます。

13
Anthony

私が使用するソリューションは次のとおりです。 Firefoxを使用する
1。 Web開発者を使用-> Webコンソール
2。新しいタブでJavaスクリプトファイルを開きます。
3。新しいタブが更新され、新しいコードが表示されます。
4。元のページを更新
5。変更が表示されるはずです。

9
Richard Culmone

Jsファイルの名前を一時的に別の名前に変更します。これは私のために働いた唯一のものです。

私はこの問題を抱えていて、Chromeでキャッシュを無効にするだけで解決しました:-F12をクリックします;-[ネットワーク]タブに移動します;-[キャッシュを無効にする]をクリックします。

Browsercachesを回避する最善の方法は、jsファイルのパスに乱数を追加することです。

擬似コードの例:

// generate a random number
int i = Random.Next();
echo "<script src='a.js?'" + i + "></script>";

これにより、ブラウザは常にファイルをリロードします。これは、URLの乱数が原因で別のファイルであると見なされるためです。

サーバーは常にファイルを返し、「?」の後に来るものを無視します。

1
xyzzy.rad

ブラウザがスクリプトをロードしていることを100%確信していますか? Firefoxのページに移動し、Firebugのコンソールを使用して、スクリプトがロードされているかどうかを確認します。

0
user372743

私はしばらくの間同じ問題を抱えていて、どうにか理解することができました...そして、私の場合は、同じ関数名を持つ2つのjavascriptがあるためでした。

0
Mark Khor

1.ブラウザ開発ツールでブラウザのキャッシュをクリア2.ネットワークタブの下で-キャッシュオプションを無効にするを選択3.ブラウザを再起動4.MacでJSファイルコマンド+ Shift + Rを強制再読み込みfresh新しい戦争がサーバー側に適切に展開されていることを確認

0
Smitha

パーティーに少し遅れましたが、これをHTMLに入れると、Webサイトがキャッシュを更新しなくなります。ウェブサイトの読み込みには少し時間がかかりますが、デバッグの目的で気に入っています。この回答から得られた: プログラムでブラウザのキャッシュを空にする方法?

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
0
user5399481