Этот ответ немного запоздал, но я думаю, что это достаточно надежный подход к тому, чтобы убедиться, что поведение кэширования синхронизировано с файлом на основе контрольной суммы самого файла.
<script type="text/javascript" src="/Scripts/Scripts.min.js?v=<%= Utils.GetFileHash("/Scripts/Scripts.min.js") %>"></script>
И в вашем классе Utils у вас есть метод, который генерирует контрольную сумму файла
public static string GetFileHash(string path)
{
string hash = (string)HttpContext.Current.Cache["_hash_" + path];
if (hash == null)
{
// Get the physical path of the file
string file = HttpContext.Current.Server.MapPath(path);
// Code for MD5 hashing omitted for brevity
hash = Utils.GetMD5(file);
// Insert the hash into the Cache, with a dependency on the underlying file
HttpContext.Current.Cache.Insert("_hash_" + path, hash, new System.Web.Caching.CacheDependency(file));
}
return hash;
}
Это кэширует хеш файла, поэтому его нужно вычислять только при каждом изменении файла.
Кроме того, CacheDependency гарантирует, что если вы измените свой файл .js, он будет гарантировать, что хэш будет восстановлен.
Надеюсь, это поможет, это то, что я использую на одном из моих производственных сайтов.