【发布时间】:2016-12-30 06:24:39
【问题描述】:
我在 IIS 中有一个网站,网站下有几个 web 应用程序(网站和 web 应用程序都是 mvc web 应用程序)。
网站使用 ASP.NET MVC 捆绑 -
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css")
.IncludeDirectory("~/Content/Styles", "*.css", true));
bundles.Add(new ScriptBundle("~/Content/js")
.IncludeDirectory("~/Content/Scripts", "*.js", true));
}
在网站_Layout.cshtml -
@Styles.Render("~/Content/css")
@Script.Render("~/Content/js")
当浏览网站(例如 mywebsite.com)时,我可以看到附加到这些引用的查询字符串。
<link href="/Content/css?v=asdsf$dfsdfdslkko" rel="stylesheet" />
<script src="/Content/js?v=jjkase$rads@asdasd"></script>
对于我在 IIS 中该网站下的子 Web 应用程序,如果我必须使用相同的捆绑资源,我可以这样做(在 webapp 布局页面中)-
@Styles.Render("/Content/css")
@Script.Reder("/Content/js")
当浏览 webapp(例如 mywebsite.com/mywebapp)时,我可以从父网站访问这些资源,但我无法在样式和脚本引用中获取这些查询字符串。
<link href="/Content/css" rel="stylesheet" />
<script src="/Content/js></scripts>
唯一的区别是我必须为 webapp 使用启动 /,这是不生成查询字符串的原因。这是一种奇怪的行为。我在浏览 webapp 时也需要查询字符串(以避免缓存)。如果我在我的父网站中也使用/ 而不是~,查询字符串就会消失(令人厌恶)。
即使/ 用于引用包,是否仍保留查询字符串?任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
为什么要避免在捆绑资源上缓存,为什么?
-
查询字符串只有在底层资源被修改时才会改变,如果没有被修改,我们可以从浏览器缓存中获取。
标签: c# asp.net asp.net-mvc iis bundling-and-minification