7

私の製品サイトでは、FirefoxがCSSとJavascriptコードの変更を「検出しない」ことがあります。むしろ古いバージョンをロードするので、キャッシュをクリアする必要があるようです。このような状況では、どうすればよいですか?これは最新のFirefox(この記事の執筆時点では16.0.1)に関連しています。

編集!

localhostcssファイルと間違えると言うのを忘れました。つまり、古いjsファイルがあり、それを更新してアップロードすると、Firefoxはそのlocalhostファイルを製品サーバー上で認識します。ファイルを含める方法:

<link rel="stylesheet" href="/xyz.css" type="text/css" />
4

7 に答える 7

11

サーバー側の言語を使用している場合は、トリックを使用できます。.css/.jsの後に文字列を追加できます。たとえばPHPの場合:

<link rel="stylesheet" type="text/css" href="/style.css?t=<?= time(); ?>" />

ページのリロードごとに変更されます。

キャッシュバスティングに関するこの記事をご覧ください。

于 2012-10-25T20:23:24.390 に答える
9

「キャッシュバスティング」と呼ばれる手法を使用して、css/jsファイルへの呼び出しにクエリ文字列を添付できます。その後、css/jsを更新するたびにクエリ文字列を更新します。

例:

<link rel="stylesheet" type="text/css" href="/styles.css?ver=1" />
于 2012-10-25T20:22:27.220 に答える
3

他のいくつかの回答で述べたように、コンテンツに基づいて静的アセットに一意の識別子を設定する必要があります。つまり、コンテンツが変更された場合にのみ識別子が変更されます。そうすれば、コンテンツが変更されていない限り、ブラウザはキャッシュされたバージョンのリソースを使用できます。これはまさにあなたが望むものです。この手法は、静的アセットのバージョン管理と呼ばれます。

したがって、現在の時刻や乱数/文字列は使用しないでください。可能であれば、ファイルの変更時刻を使用するか、(より適切に)その内容のmd5ハッシュを使用してください。この識別子をクエリ文字列として追加するか(無視されます)、または(より適切に)拡張子の前のファイル名に追加することができます。

これとは対照的に、他のいくつかの回答で言及されているキャッシュバスティングの手法に関する混乱を解消します。キャッシュバスティングは、広告主が常にリソースをリロードするようにブラウザに強制するために広告主が使用する手法であり、広告主は広告の表示回数を数値で測定できます。リソースが要求される回数。これは、乱数を使用することで簡単に実行できます。通常、これを静的アセットに使用することは望ましくありません。

于 2013-02-02T01:19:42.850 に答える
2

送信するcss/jsの最後にバージョンを追加できます。

例えば

の代わりにwww.foo.com/js/javascript.js、送信www.foo.com/js/javascript.js?v=1し、
の代わりにwww.foo.com/css/style.css、送信しますwww.foo.com/css/style.js?v=1

于 2012-10-25T20:22:29.393 に答える
2
  • メタタグを使用して、強制的に更新することができます。<meta http-equiv="Cache-control" content="no-cache">、または<meta http-equiv="pragma" content="no-cache">
  • HTTPヘッダーを強制することができます:Cache-control: no-cacheまたはPragma: no-cache
  • CSSファイルとJavaScriptファイルにランダムなクエリ文字列を追加できます。
于 2012-10-25T20:25:35.527 に答える
1

キャッシュをクリアするか、ハードリフレッシュ(Ctrl + F5)する必要があります。

もう1つのオプションは、JSまたはCSSファイルのファイル名を変更して、FFがそれをキャッシュファイルとして認識しないようにすることです(たとえば、style.cssの名前をstyle2.cssに変更します)。

于 2012-10-25T20:23:17.477 に答える
1

style.css?randomnumberローディングを保証します

于 2012-10-25T20:24:22.417 に答える