【问题标题】:How does a bundle (Sytem.Web.Optimization) generate the build fingerprint for bundle-links?捆绑包 (System.Web.Optimization) 如何为捆绑链接生成构建指纹?
【发布时间】:2013-05-03 18:27:24
【问题描述】:

在 MVC-4 中,用于压缩 CSS 和 Js 文件的包可以使用以下 Razor 语法链接到布局文件中:@Scripts.Render("~/JavaScripts")

这会在布局文件中生成一个链接,其中包含一个fingerprint,它会在每个应用程序构建时重新生成,以帮助进行缓存控制。

所以生成的链接看起来像:

<script src="/JavaScripts?v=dSMc_JTHMMP5GrWnILSYt_QBMw-g1pPlzknSorXpkyQ1"></script>

我想知道指纹是如何生成的(用于类似目的),但 Sytem.Web.Optimization 尚未开源。

【问题讨论】:

  • 我不知道 System.Web.Optimization,但 IIRC SquishIt 使用文件内容的哈希来创建这个指纹。如果您的指纹识别的目的是在文件中的任何内容发生更改时更改它,您可以散列该过程中涉及的所有文件并使用它的散列。作为参考,您可以查看 SquishIt 源 -> github.com/jetheredge/SquishIt

标签: asp.net-mvc-4 asp.net-optimization


【解决方案1】:

指纹是使用包中字节的 sha256 哈希生成的,然后进行编码:

            byte[] hash = sha256.ComputeHash(Encoding.Unicode.GetBytes(bundle));
            return HttpServerUtility.UrlTokenEncode(hash);

【讨论】:

  • 这种情况何时何地发生?是否有一个事件我可以挂钩,以便在发生这种情况时触发我自己的代码?
猜你喜欢
  • 2020-04-09
  • 2021-10-19
  • 2013-09-24
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多