1

こんにちは、ブラウザのキャッシュ実験をしようとしています。このような

<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;
    }
}
4

1 に答える 1

0

最後に、jsファイルをキャッシュする方法を手に入れましたページをブラウザータブに追加します(リンクをマークしますか?IEのお気に入りと同じように、英語でそれが何であるかわかりません)リンクを開くと、表示されます

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

jsファイルを変更し、リンクをマークして新しいタブを開きます

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

あなたのプロンプトのための Tks Bergi :)

于 2013-01-10T05:49:07.910 に答える