【发布时间】:2013-08-29 13:53:03
【问题描述】:
我一直在深入研究 ASP.NET MVC 内部功能(不同的原因),但仍然无法涵盖所有行为。其中一个我没有是 subj。
它的工作方式如下:
如果我捆绑了一些文件(例如 css 文件),框架会检测到这些更改并为新捆绑包生成新的 id(让浏览器更容易刷新更改),例如 href="/Content/css?v=qartPE4jGe-l1U0I7kNDZPZzVTdh0kT8VBZZA_uURjI1"。
我真正想了解的内容:
框架(可能不是 MVC 而是 .NET 的东西)检测到文件已更改(因为 没有活动的目录观察程序(如即使网络服务器离线,我也可以更改文件)以实时查看文件更改,并且系统实际上检测到文件内容更改(我尝试只是重新保存文件而不更改其内容和捆绑包号也没有改变))? (我认为显然系统无法比较每个文件内容来检测每个请求的变化)。
框架在哪里(以及如何)存储当前包 id 以及它如何存储以前的版本(因为以前的包在转到其 url 时仍然可用) ?
非常感谢!
【问题讨论】:
-
该站点提供了对捆绑机制的一些见解:dotnetexpertguide.com/2012/10/… 至于您的第二个问题,默认情况下似乎使用了服务器缓存。捆绑包 ID 是文件内容的散列,因此会在您更改内容时更改。旧版本不存储在服务器上,不再可用。该 URL 很可能仍然有效(因为它只是一个查询字符串,用于让浏览器意识到它需要下载新内容),但您将获得新内容,而不是旧内容。
标签: css asp.net-mvc bundle