バンドルと縮小は、スクリプトをレンダリングするときに正しいバージョン番号を URL に適切に追加することを処理するため、実際にこれを処理する正しい方法です。
しかし、これがレガシー サイトで、何らかの理由でバンドルを使用できない場合、スクリプト タグを生成し、ファイルのチェックサムを計算し、適切なクエリ文字列パラメーターを追加するサーバー側ヘルパーを作成することが 1 つの可能性です。
public static class ScriptExtensions
{
public static string Script(this Page page, string relativeUrl)
{
var path = page.Server.MapPath(relativeUrl);
if (File.Exists(path))
{
return string.Format(
"<script type=\"type/javascript\" src=\"{0}?v={1}\"></script>",
page.ResolveUrl(relativeUrl),
Hash(path)
);
}
return string.Empty;
}
private static string Hash(string file)
{
using (var stream = File.OpenRead(file))
using (var bs = new BufferedStream(stream))
{
using (var sha1 = new SHA1Managed())
{
byte[] hash = sha1.ComputeHash(bs);
var result = new StringBuilder(2 * hash.Length);
foreach (byte b in hash)
{
result.AppendFormat("{0:X2}", b);
}
return result.ToString();
}
}
}
}
次に、WebForm 内でヘルパーを使用してスクリプトを含めます。
<%= this.Script("~/scripts/example.js") %>
これにより、次のマークアップが発行されます。
<script type="type/javascript" src="/scripts/example.js?v=3C222D8DFA2A02A02E9A585EA6FE0D95673E8B4A"></script>
スクリプト ファイルの内容を変更すると、その SHA1 チェックサムが異なり、別のバージョンのクエリ文字列パラメーターが生成されて追加され、すべてのクライアント側キャッシュが破棄されます。