1
你好,我正在嘗試做一個瀏覽器緩存實驗。 這樣如何緩存javascript文件
<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
的最後一個文件是:乙
,但它實際上是:
緩存文件是:乙
的最後一個文件是:乙
有什麼問題嗎?爲什麼瀏覽器不緩存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;
}
}
你需要包含的樂趣功能在你的問題,因爲多數民衆贊成在您的問題。 .. – hereandnow78
你的服務器如何處理'v'參數?請發佈整個服務器響應,包括緩存標題和內容。另外,你是如何重新加載頁面的? – Bergi
我在我的問題中添加了fun()和Tool.GetFileRefUrl(「js_cached.js」)。 然後我使用按F5重新加載頁面或複製URL以打開新的瀏覽器選項卡。 tks回覆 –