移除MVC5 ASP.NET中Theme.css类后变更未生效问题求助
解决ASP.NET MVC5 Bundle中CSS变更不生效的问题
嘿,我碰到过好多次这种Bundle缓存坑,给你梳理几个大概率能解决的方向:
1. 先搞定Bundle的缓存问题
ASP.NET MVC的Bundle默认会把CSS合并压缩后缓存,哪怕你改了源文件,服务器或浏览器可能还抱着旧版本不放。
- 开发环境的话,直接在
BundleConfig.cs里加一行,关闭优化模式,这样每次都会加载最新的源文件:
或者手动在页面的Bundle引用后面加个版本参数,比如BundleTable.EnableOptimizations = false;@Styles.Render("~/Content/theme?v=2"),强制浏览器刷新。 - 生产环境的话,确保
web.config里的compilation节点debug是false:
这样Bundle会自动根据文件内容生成哈希值,文件变了,Bundle的URL哈希也会变,自动触发缓存失效。<compilation debug="false" targetFramework="你的.NET版本" />
2. 确认你改对了文件!
你在Bundle里配置的源文件是~/skin/default_skin/css/theme.css,但你提到现在Content/theme目录下有theme.css——这里要注意,~/Content/theme是Bundle的虚拟访问路径,不是物理文件路径!你得确认自己修改的是skin/default_skin/css/下的那个theme.css,而不是Content目录下的(如果那个是旧的或者没用的文件)。
3. 清缓存!清缓存!清缓存!
- 服务器端:重启下IIS或者应用程序池,把服务器端的缓存清掉。
- 浏览器端:按
Ctrl+Shift+R强制刷新,别用普通刷新,普通刷新可能还是读本地缓存。
4. 检查Bundle有没有正确注册
去Global.asax.cs的Application_Start方法里看看,是不是调用了BundleConfig.RegisterBundles(BundleTable.Bundles)?要是没调用的话,Bundle根本没生效,可能你之前一直是直接加载单个CSS,改了也白搭。
5. 直接验证Bundle内容
打开浏览器,直接访问http://你的域名/Content/theme,看看返回的CSS代码里,你移除的类是不是真的没了。如果还是有,那说明Bundle没更新,回头再检查源文件和缓存设置;如果已经没了,那就是浏览器缓存的问题,再强制刷新页面就行。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

