2013-01-07 56 views
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; 
    } 
} 
+2

你需要包含的樂趣功能在你的問題,因爲多數民衆贊成在您的問題。 .. – hereandnow78

+0

你的服務器如何處理'v'參數?請發佈整個服務器響應,包括緩存標題和內容。另外,你是如何重新加載頁面的? – Bergi

+0

我在我的問題中添加了fun()和Tool.GetFileRefUrl(「js_cached.js」)。 然後我使用按F5重新加載頁面或複製URL以打開新的瀏覽器選項卡。 tks回覆 –

回答

0

最後,我有一個辦法來緩存JS文件 的頁面添加到您的瀏覽器選項卡(標記鏈接?好我不確定它是什麼英文,就像IE上的我的最愛) 打開鏈接,你會看到

The cache file is :A 
The last file is :A 

修改js文件,並通過標記鏈接

The cache file is :A 
The last file is :B 

韓國社交協會BERGI爲打開新的標籤頁的提示:)