0

サーバーがキャッシュするときにcssに問題があるため、styles.cssをキャッシュしないようにしようとしています。

<script>
var numBAH = Math.floor(Math.random()*100);
</script>

<link href="styles.css+ numBAH +" rel="stylesheet" type="text/css" />
4

3 に答える 3

8

これは、ドキュメントの先頭で行うことができます。

<script>
document.write('<link href="styles.css?r='+ Math.floor(Math.random()*100) +'" rel="stylesheet" type="text/css" />');
</script>

しかし :

  • 同じ数の2倍を見つける可能性が高い
  • 通常、キャッシュを避けるべきではありません

私が提案するソリューション:

1)(new Date()).getTime()乱数の代わりに使用する

2)バージョンが変更されたときに番号を変更するだけです:( styles.css?v=3javascriptなし)

于 2012-10-04T13:56:44.713 に答える
7

サーバー側の言語にアクセスできる場合は、ファイルのコンテンツ全体のハッシュであるクエリ文字列を使用してリンクタグをレンダリングする方が適切です。このように、キャッシュ無効化機能は、ファイルの内容が実際に変更された場合にのみ変更されます。


その後の議論を見た後、キャッシュの読み込みが速すぎるため、キャッシュを使用したくない方法について、答えを変更したいと思います。ではなく、次のことを行います。ページを修正して、すばやく読み込むことが望ましい結果になるようにします。それに関して特定の問題が発生している場合は、それらの問題を対象とした質問を作成し、お粗末な回避策を直接実行しないでください。new Date()

于 2012-10-04T13:58:02.903 に答える
0

キャッシュバスティングは、サーバー側のレンダリングなしで機能します。モバイルとデスクトップの両方でFirefox、Chrome、Safariの最近のバージョンをテストしましたが、このコードは機能しました。(ただし、IEについてはよくわかりません。)

<HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    var numBAH = Math.floor(Math.random()*10000);

    document.write('<LI' + 'NK HREF="./path/to/style.css?cacheBusting='+numBAH+'" rel="stylesheet">');
    </SCRIPT>
</HEAD>
于 2016-08-27T09:20:21.633 に答える