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

Node.js搭配IIS7反向代理时JS/CSS文件缓存配置不生效问题求助

IIS反向代理下Node服务缓存不生效解决方案

核心原因

你当前配置里的<staticContent>节点的缓存规则仅作用于IIS直接托管的本地静态资源,通过反向代理转发到Node服务的动态请求响应头,默认会被IIS的ARR代理模块覆盖/抹除,导致Node返回的Cache-Control无法传递到浏览器。

具体修改步骤

1. 调整web.config配置

完整的system.webServer节点参考如下,替换你原有的对应部分即可:

<system.webServer>
  <!-- 配置反向代理不修改后端响应头 -->
  <proxy 
    preserveHostHeader="true" 
    reverseRewriteHostInResponseHeaders="true" 
    responseBufferLimit="0" 
  />

  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <!-- 移除IIS默认添加的缓存头,避免覆盖Node返回的配置 -->
      <remove name="Cache-Control" />
      <remove name="Pragma" />
      <remove name="Expires" />
    </customHeaders>
  </httpProtocol>

  <staticContent>
    <!-- 该配置仅对IIS托管的本地静态文件生效,无需修改 -->
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00"/>
  </staticContent>

  <!-- 以下保留你原本的URL重写反向代理规则即可 -->
  <rewrite>
    <!-- 你原有转发到Node端口的入站规则保持不变 -->
  </rewrite>
</system.webServer>
</configuration>

2. 关闭ARR全局缓存覆盖

  1. 打开IIS管理器,点击左侧服务器根节点
  2. 找到「Application Request Routing Cache」功能并双击打开
  3. 点击右侧操作栏的「Cache Configuration」
  4. 取消勾选「Enable cache」,保存设置后重启站点

3. 验证配置

重启IIS站点和Node服务后,通过浏览器开发者工具查看响应头,确认Cache-Control的值与你Node代码中设置的一致即可。

你直接通过node app.js启动服务的方式不影响该配置生效,和教程中的启动命令差异和本次缓存问题无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:06:02