2013-03-07 17 views
7

ブラウザで2つのJavaScriptファイルがキャッシュされないようにしようとしています。JavaScriptファイルのキャッシュを防止する

私は<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">を成功させようとしました。ここに私の<head>要素コードだ:

<head> 

<meta charset="UTF-8"> 
<meta http-equiv="Cache-control" content="NO-CACHE"> 

<link type='text/css' href='/files/theme/popup_basic.css' rel='stylesheet' media='screen' /> 

<!-- JavaScript Start --> 
<script type="text/javascript" src="/files/theme/gohome.js"></script> 
<script type="text/javascript" src="http://192.168.0.149/redirect.js"></script> 
<!-- JavaScript End --> 

</head> 

私の過小から、これは動作するはずです。しかし、redirect.jsファイルはキャッシュされ続けます!

誰かが間違っていることを知っていますか?

+2

なぜファイルのキャッシュを防止したいですか?サーバー上でHTMLを生成している場合は、src属性にGUIDを追加して、

+0

このファイルはリダイレクトであり、サーバーがオンラインのときにリダイレクトする必要があるためです。オフラインの場合、ユーザーはそのページにとどまります。 –

答えて

11

<meta http-equiv="Cache-control" content="NO-CACHE">ディレクティブのCACHE-CONTROL:NO-CACHEは、キャッシュされた情報を使用すべきではなく、オリジンサーバーに転送する必要があることを示します。

リクエストごとにキャッシュを防止するために、URLにランダムな文字列を追加する必要があります。 以下の例は、スクリプトタグを動的に作成し、URLに乱数を追加してから追加するJavaScriptを使用しています。

<script language="JavaScript"> 
var s=document.getElementsByTagName('script')[0]; 
var sc=document.createElement('script'); 
sc.type='text/javascript'; 
sc.async=true; 
sc.src='http://192.168.0.149/redirect.js?v' + Math.random(); 
s.parentNode.insertBefore(sc,s); 
</script> 

1回だけ防止したい場合は、srcに文字列を追加します。

<script src="http://192.168.0.149/redirect.js?12345678"></script> 
+0

乱数を生成する必要はありません。純粋なHTMLを使用して静的に型指定された番号にすることができます。 (私の答えを見てください)。 –

+0

私はすべての要求にキャッシュされたファイルを防止したい場合を考えています。 – Derek

+0

まあ静的な数値を試してみたところ、動作しません。だから私は通常PHPを使って日付を使用しています。乱数は本当に必要なものです。 (私は推測しています) –

関連する問題