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

Ubuntu环境下Apache/Passenger为何不向浏览器提供更新后的内容?

React/Rails 6部署后页面无更新问题解答

Apache 和 Passenger 均存在缓存机制,是导致问题的常见原因

Apache 端缓存

  • Apache 默认可能通过 mod_cache、mod_expires 模块启用静态资源缓存,编译后的JS、CSS等文件会被Apache或浏览器缓存。如果你的React编译产物文件名没有带哈希后缀(比如仅命名为main.js而非main.7f9d2a.js),服务器和浏览器会判定文件未变更,继续使用旧缓存。
  • 可检查Apache配置文件,查看是否存在 CacheEnable、ExpiresByType 这类控制缓存时长的指令。

Passenger 端缓存

  • Passenger 会缓存Rails应用的已加载代码与类,但针对前端React代码,核心问题通常是是否重新编译静态资源:部署时若未执行 RAILS_ENV=production rails assets:precompile,Passenger会继续使用旧的编译产物。
  • 即便重启Apache,Passenger的应用进程可能未完全重启,可手动执行命令强制重启应用:
    passenger-config restart-app /path/to/your/rails/app
    

其他需排查的点

  • 浏览器本地缓存:服务器端更新后,浏览器可能仍保留旧文件,可通过 Ctrl+Shift+R 强制刷新,或打开开发者工具(F12)在「网络」选项卡勾选「禁用缓存」后刷新页面。
  • 静态资源编译遗漏:务必在生产环境下重新编译前端资源,确保更新后的JSX代码被编译为最新的静态文件。
  • 部署路径错误:确认更新后的源码已上传至Apache配置指定的应用目录,避免传错位置导致服务器仍读取旧文件。

内容的提问来源于stack exchange,提问作者d-yada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:53:10