首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET捆绑-包含的文件更改后捆绑不更新(返回304 not modified)

ASP.NET捆绑-包含的文件更改后捆绑不更新(返回304 not modified)
EN

Stack Overflow用户
提问于 2012-08-28 20:10:35
回答 12查看 62.7K关注 0票数 74

我正在尝试将ASP.NET捆绑到ASP.NET MVC4应用程序中。现在的情况是,我想做一个CDN风格的服务,它有JS和CSS文件,你可以从其他站点用以下类型的地址寻址:http://www.mycdn.com/scripts/plugin/js,它捆绑并缩小了所有包含的.js文件。

我对一个文件的包配置如下所示:

代码语言:javascript
复制
bundles.Add(new ScriptBundle("~/Scripts/plugin/pluginjs").Include("~/Scripts/plugin/jquery.plugin.js"));

但是,当我这样做时,即使在我更改了原始的js文件之后,包也不会更新。当我刷新我的浏览器时,我一直得到304 Not Modified,并且缩小的文件的内容没有更新。我怎样才能让bundle更新,因为包含旧内容的bundle是没用的?我尝试了所有的方法,但找不到解决方案。

提前感谢!

EN

回答 12

Stack Overflow用户

发布于 2017-01-05 04:27:00

请注意,如果您使用的是Google Chrome,缓存是相当激进的。为了确保不缓存任何内容,您可以执行Ctrl-Shift-I以打开developer窗格。转到Network并单击Disable Cache。确保保持打开状态。现在刷新页面。您的缓存应该被清除,文件更改现在应该反映出来。

票数 10
EN

Stack Overflow用户

发布于 2012-08-29 15:57:57

我实际上决定不使用System.Web.Optimization来完成这项任务,但我找到了Microsoft Ajax Minifier,它也包含在MVC4 System.Web.Optimization库附带的WebGrease.dll中。我编写了以下函数,然后在Application_Start中为每个缩小的文件调用该函数:

代码语言:javascript
复制
    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上的所有文件。

票数 3
EN

Stack Overflow用户

发布于 2017-02-07 04:34:57

绑定操作区分大小写。确保文件名具有正确的大小写。

我不得不在我的BundleConfig.cs中更改了一行:

代码语言:javascript
复制
bundles.Add(new StyleBundle("~/Content/css").Include(
    "~/Content/bootstrap.css",
    "~/Content/Site.css"));  <-- Uppercased.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12158933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档