You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSHTML视图修改后需重启应用才生效,如何禁用视图缓存?

解决Browser Link下.cshtml修改后不实时生效的视图缓存问题

我之前也踩过一模一样的坑!用Browser Link改CSS实时生效爽得很,但改.cshtml后浏览器自动刷新了,页面却还是老样子,非得重启应用才行——这确实是视图编译缓存在搞鬼,服务器端没重新编译修改后的视图,自然返回的还是旧HTML。下面分两种场景给你靠谱的解决办法:

ASP.NET Core 环境

1. 启用 Razor 运行时编译(推荐)

这是最彻底的解决方案,让视图修改后实时重新编译。在你的Program.cs(老版本是Startup.cs)里添加运行时编译服务:

// 注册控制器和视图服务时,添加运行时编译
builder.Services.AddControllersWithViews()
    .AddRazorRuntimeCompilation();

注意:这个配置只应该在开发环境启用,生产环境还是要预编译视图提升性能。你可以通过launchSettings.json里的ASPNETCORE_ENVIRONMENT确保当前是Development环境。

另外在Visual Studio里,也可以右键项目→属性→生成→勾选「启用 Razor 运行时编译」,不过代码配置的方式更稳定,不会因为IDE设置变动失效。

2. 临时清除本地视图缓存(应急用)

如果临时不想改代码,可以手动删除视图编译的临时文件:

  • Windows 路径:%USERPROFILE%\AppData\Local\Temp\ASP.NET\CoreWebSites\<你的项目名>
  • 删除这个目录下的所有文件,重启Browser Link或者刷新页面就能看到修改了。

传统 ASP.NET(非Core)环境

1. 修改 Web.config 禁用批量编译

在Web.config的<system.web>节点里,确保debug="true"同时设置batch="false":

<system.web>
    <compilation debug="true" batch="false" targetFramework="4.8" />
    <!-- 其他配置 -->
</system.web>

batch="false"会禁用视图的批量编译,让每个视图单独编译,修改后就能实时生效。另外debug="true"本身就是开发环境的标配,开启后也会默认禁用一些缓存优化。

2. 检查 Razor 宿主配置

如果上面的方法没用,还可以检查Web.config里的Razor宿主配置,确保没有开启缓存:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <!-- 你的其他命名空间 -->
        </namespaces>
    </pages>
</system.web.webPages.razor>

如果有cacheProvider相关的配置项,直接删除或者注释掉就行。

最后再提一句:Browser Link只是负责触发浏览器刷新,但核心是要让服务器端重新编译视图返回新的HTML,所以上面的配置才是解决问题的关键,不是浏览器缓存的锅~

内容的提问来源于stack exchange,提问作者wh1sp3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:45