こんにちは、ブラウザのキャッシュ実験をしようとしています。このような
<head>
<script type="text/javascript" src='<%=Tool.GetFileRefUrl("js_cached.js")%>' ></script>
<script type="text/javascript">
var lastFile = fun();
</script>
<script src="js_cached.js" type="text/javascript"></script>
<script type="text/javascript">
var cacheFile = fun();
</script>
</head><body>
<form>
<div>
The cache file is :<script type="text/javascript">
document.writeln(cacheFile);
</script>
<br />
The last file is :<script type="text/javascript">
document.writeln(lastFile);
</script>
</div>
</form>
</body>
Tool.GetFileRefUrl("js_cached.js")
のように毎回ランダムな js ファイル文字列を返します"js_cached.js?v=8752162122311"
初めてfun()
実行すると「A」が返されるため、ページには次のように表示されます。
キャッシュファイルは:A
最後のファイルは:A
js_cached.js
ここで、Web サーバー上のファイルを変更してfun()
「B」を返すようにしました。結果も表示されることを願っています。
キャッシュファイルは:A
最後のファイルは:B
しかし、実際には次のとおりです。
キャッシュファイルは:B
最後のファイルは:B
何か間違えている?ブラウザが js ファイルをキャッシュしないのはなぜですか? 私は間違った仮定をしましたか?
楽しみは
function fun() {
return "A";//after modify it be "B"
}
Tool.GetFileRefUrl は
public class Tool
{
public static string GetFileRefUrl(string url)
{
var ticks = GetLastWriteTime(url);
var result = string.Format("{0}?v={1}", url, ticks);
return result;
}
private static long GetLastWriteTime(string fileName)
{
var lastWriteTime = File.GetLastWriteTime(HttpContext.Current.Server.MapPath(fileName));
return lastWriteTime.Ticks;
}
}