我正在尝试将ASP.NET捆绑到ASP.NET MVC4应用程序中。现在的情况是,我想做一个CDN风格的服务,它有JS和CSS文件,你可以从其他站点用以下类型的地址寻址:http://www.mycdn.com/scripts/plugin/js,它捆绑并缩小了所有包含的.js文件。
我对一个文件的包配置如下所示:
bundles.Add(new ScriptBundle("~/Scripts/plugin/pluginjs").Include("~/Scripts/plugin/jquery.plugin.js"));
但是,当我这样做时,即使在我更改了原始的js文件之后,包也不会更新。当我刷新我的浏览器时,我一直得到304 Not Modified,并且缩小的文件的内容没有更新。我怎样才能让bundle更新,因为包含旧内容的bundle是没用的?我尝试了所有的方法,但找不到解决方案。
提前感谢!
发布于 2017-01-05 04:27:00
请注意,如果您使用的是Google Chrome,缓存是相当激进的。为了确保不缓存任何内容,您可以执行Ctrl-Shift-I
以打开developer窗格。转到Network
并单击Disable Cache
。确保保持打开状态。现在刷新页面。您的缓存应该被清除,文件更改现在应该反映出来。
发布于 2012-08-29 15:57:57
我实际上决定不使用System.Web.Optimization来完成这项任务,但我找到了Microsoft Ajax Minifier,它也包含在MVC4 System.Web.Optimization库附带的WebGrease.dll中。我编写了以下函数,然后在Application_Start中为每个缩小的文件调用该函数:
public static void MinifyFile(string virtualPath)
{
string fullPath = HttpContext.Current.Server.MapPath(virtualPath);
string extension = Path.GetExtension(fullPath).ToLower();
string targetPath = fullPath.Substring(0, fullPath.Length - extension.Length) + ".min" + extension;
if(File.Exists(fullPath) == false)
{
throw new FileNotFoundException("File not found: " + fullPath);
}
string input = File.ReadAllText(fullPath);
string output;
if (extension == ".js")
{
Microsoft.Ajax.Utilities.Minifier jsmin = new Microsoft.Ajax.Utilities.Minifier();
output = jsmin.MinifyJavaScript(input);
}
else if (extension == ".css")
{
Microsoft.Ajax.Utilities.Minifier jsmin = new Microsoft.Ajax.Utilities.Minifier();
output = jsmin.MinifyStyleSheet(input);
}
else
{
throw new NotSupportedException(extension + " is not supported for minification.");
}
File.WriteAllText(targetPath, output);
}
现在,我的应用程序正在缩小Application_Start上的所有文件。
发布于 2017-02-07 04:34:57
绑定操作区分大小写。确保文件名具有正确的大小写。
我不得不在我的BundleConfig.cs中更改了一行:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css")); <-- Uppercased.
https://stackoverflow.com/questions/12158933
复制相似问题