Chomado's Blog
You Are Reading

[ASP.NET][C#][JavaScript] 特定のファイルをブラウザにキャッシュさせなくしたい

0
C#

[ASP.NET][C#][JavaScript] 特定のファイルをブラウザにキャッシュさせなくしたい


js や css ファイルを修正して, ブラウザで試すときに,
ブラウザにキャッシュされてしまっており修正が反映されないことがままあります.
私はこれでハマりました.
それで, そのファイルだけキャッシュさせなくしたい.
そのための方法を, C#(ASP.NET)版と 生のhtmlに JavaScript を埋め込む版 の2つ描きました.

C#(ASP.NET)版

これを

<!-- 修正中のjsファイル -->
<script src="/scripts/test.js"></script>

こうじゃ!

<!-- 修正中のjsファイル -->
<script src="/scripts/test.js?timestamp=@DateTime.Now.Ticks.ToString()"></script>

こうするとhtmlでは

<script src="/scripts/test.js?timestamp=635514023162619619"></script>

などとなり, 次のアクセスでは違うURIなので, 結果的にキャッシュにヒットしなくなるわけです.

(@DateTime.Now.Ticks.ToString() ってのを書いたので, タイトルに ASP.NET, C#と特別に環境を書きました)

JavaScript では

生のhtmlでも同じことをやろうとすると, 以下のJSを埋め込むことになります. (jQuery)

// タイムスタンプクエリをつける動作
$(function() {
    var script = document.createElement('script'); 
    script.src = 'js/main.js?' + (new Date).getTime();
    document.body.appendChild(script);
});

埋め込んだ後はこうなります

<!-- test.js をキャッシュさせなくする -->
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
    // タイムスタンプクエリをつける動作
    $(function() {
        var script = document.createElement('script'); 
        script.src = 'scripts/test.js?' + (new Date).getTime();
        document.body.appendChild(script);
    });
</script>

公開後の追記

なるほど〜!φ(*゚▽゚*)oメモメモ
『HTTP GET flood 攻撃』でググったら, DoS攻撃の一種みたい!
なるほどなあ


Madoka Chomado (ちょまど)

千代田まどかです。よく「ちょまど」と呼ばれます。Microsoft 社員。文系出身プログラマ兼マンガ家です。

(2) Comments

  1. 匿名 says:

    なるほど!あったまいいーっ!

    1. 私もこれを教えていただいた時は感動しました!(((o(*゚▽゚*)o)))

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です