ASP.NET MVC4捆绑文件更改时不缓存破坏

时间:2017-05-18 00:07:54

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

我已经阅读了这个问题的答案:ASP.NET Bundling - Bundle not updating after included file has changed (returns 304 not modified)

但是,没有一个答案能够解决或与我所看到的相匹配。

首先,我能够在Windows 10和Windows 2012服务器上重现我的问题。

我已经在发布模式下构建了我的项目,在web.config中更改了debug = false。

我已将我的项目更新为Microsoft.AspNet.Web.Optimization NuGet包,版本1.1.3

我的捆绑设置如下所示:

public static void RegisterBundles(BundleCollection bundles)
{
   BundleTable.EnableOptimizations = true;
   bundles.Add(new ScriptBundle("~/bundles/mybundle")
      .Include("~/Views/User/UserSearch.js")
      .Include("~/Views/User/UserEdit.js")
   );

   ...
}

捆绑包中列出的文件(UserSearch.js,UserEdit.js)都没有.min目录中的.min版本。

我的User.cshtml文件的结尾如下所示:

@section Scripts {
   @Scripts.Render("~/bundles/otherstuff")
   @Scripts.Render("~/bundles/mybundle")
   <script type="text/javascript" src="AnotherFile.js"></script>
}

所有这一切,当我查看页面时,我看到捆绑包的请求通过:

https://local/bundles/mybundle?v=wlen6W7mg528CIKzW0x3ewQacQ6mf8wyin1XGaXoonQ1

然后我通过在顶部添加alert('hi');行来更改我的UserSearch.js文件。

此时,如果我刷新页面,我期待更改v = querystring参数,并显示警告框。但事实并非如此。

如果我回收网站或IIS,并再次访问该页面,我会收到警告框。

缓存破坏应该在不重新编译或回收的情况下即时运行吗?

是否有任何其他因素可能会干扰捆绑器无法识别文件更改或@ Scripts.Render()没有写出新令牌?

0 个答案:

没有答案