【问题标题】:ASP.NET MVC: When does script bundling decide to change the version of a bundle?ASP.NET MVC:脚本捆绑何时决定更改捆绑的版本?
【发布时间】:2014-04-05 04:44:21
【问题描述】:

我曾经在我的脚本引用的末尾加上“?v=n”,例如:

<script type="text/javascript" src="@Url.Content("~/Scripts/Foo.js")?v=2"></script>

每次编辑 .js 时,我都会在该版本控制中添加 1,例如:

<script type="text/javascript" src="@Url.Content("~/Scripts/Foo.js")?v=3"></script>

我决定不能再这样了(我现在有太多脚本),所以我开始使用 ASP.NET MVC 捆绑功能(BundleConfig, BundleCollection, RegisterBundles 等)。

确实会自动为捆绑包分配一个版本:

<script src="/Scripts/Bundles/Foo?v=EjpuCsTAfNN9NMv5E8hER41p25Zj9w6ncqWRsYdqQUY1"></script>

我的问题是:
该版本何时更改?我可以依靠这个吗?它在内部是如何工作的?

我可能错了,但有一次我不得不手动刷新浏览器以更新脚本,因为我对脚本所做的微小更改没有在版本。

是什么原因造成的?
版本控制中是否考虑了微小的变化?

【问题讨论】:

  • 运行应用程序时分配的版本!如果您使用的是 iis,则必须重新启动 IIS。如果您正在使用 IIS Express,请停止并再次启动应用程序版本将自动更改。
  • 谢谢。不过我已经注意到了,那就是回答“何时”而不是“如何”:)
  • 根据我的实践经验,我认为使用严格的缓存机制实现或覆盖自己的捆绑要好得多,因为很难知道究竟是如何工作的以及是否它们是否正常运行,此外,无法跟踪和调试会降低您可能希望通过使用捆绑软件交付给客户的附加值

标签: asp.net-mvc-4 bundling-and-minification


【解决方案1】:

.net如何生成bundle的版本?

捆绑的版本是所有捆绑内容的SHA256 based hash。

因此,如果您要更改捆绑文件的任何数据 - 版本将会更改。

【讨论】:

  • 在托管环境中似乎并非如此。当项目的构建或 Web 配置更改时,捆绑包版本会更改。
猜你喜欢
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 2023-04-03
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多