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连接服务器,在项目根目录执行:
Passenger检测到mkdir -p tmp && touch tmp/restart.txttmp/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
相关产品推荐
相关产品推荐

