您好我正在尝试进行浏览器缓存实验。像这样
<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;
}
}