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

Fastify服务器页面无法正常更新问题求助

问题解决:Fastify应用修改页面后不更新(Serv00服务器)

针对你遇到的「修改现有路由页面无更新,仅新建路由生效」的问题,结合Serv00服务器和Fastify框架特性,给出以下排查解决步骤:

1. 禁用EJS模板缓存

Fastify的@fastify-view插件默认会缓存EJS模板,生产环境下不会自动读取修改后的模板文件。修改模板注册代码,禁用缓存:

fastify.register(require("@fastify/view"), {
  engine: {
    ejs: require("ejs"),
  },
  options: {
    cache: false // 开发环境禁用缓存,生产环境可按需调整缓存策略
  }
});

若需更灵活控制,也可在修改模板后手动清除EJS缓存:

// 可在路由处理或服务器重启逻辑中调用
ejs.clearCache();

2. 触发Serv00 Passenger应用重启

Serv00通过Passenger托管Node.js应用,Passenger会缓存应用进程,单纯修改文件不会触发重启。手动触发重启的两种方式:

  • SSH连接服务器,在项目根目录执行:
    mkdir -p tmp && touch tmp/restart.txt
    
    Passenger检测到tmp/restart.txt的变化会自动重启应用
  • 登录Serv00控制面板,找到对应Node.js应用,点击「重启」按钮

3. 处理静态资源缓存

若修改的是public目录下的CSS/JS等静态文件,可能存在浏览器或服务器缓存:

  • 修改静态资源引用时添加版本号,例如:
    <link rel="stylesheet" href="/style.css?v=1.0.1">
    
  • 配置@fastify-static禁用开发环境缓存:
    fastify.register(require('@fastify/static'), {
      root: path.join(__dirname, 'public'),
      cacheControl: false,
      maxAge: 0 // 强制缓存时长为0
    });
    

4. 检查文件权限

Serv00服务器的文件权限可能导致应用无法读取修改后的文件,调整权限:

chmod 644 app.js views/*.ejs
chmod 755 views public

5. 确保应用完全重启

确认Serv00上的Node.js进程已完全终止并重启,而非仅重新加载文件。可通过Serv00控制面板查看应用状态,或用ps aux命令检查进程是否更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:07:33