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

Node.js同域名多子站静态资源跨路径缓存异常求助

解决方案

问题根源是:相对路径引用的静态资源,浏览器会以域名根路径作为缓存标识。两个站点都用./styles.css,浏览器会将其统一缓存为planetshah.com/styles.css,导致资源混淆。以下是针对性解决办法:

1. 改用绝对路径引用静态资源

将每个站点的静态资源引用修改为带子路径的绝对路径,让浏览器区分不同站点的资源:

  • PWV站点的引用调整为:
<link href="/pwv/styles.css" rel="stylesheet"/>
<link href="/pwv/favicon.ico" rel="icon"/>
  • Mixes站点的引用调整为:
<link href="/mixes/styles.css" rel="stylesheet"/>
<link href="/mixes/favicon.ico" rel="icon"/>

2. 调整Express静态资源的挂载路径

当前express.static直接挂载在根路径,需修改为对应子路径,确保请求能正确匹配到站点资源:

  • PWV站点修改:
// 原代码
// pwvApp.use(express.static(path.join(__dirname, 'planetshah.com\\pwv')))
// 修改后
pwvApp.use('/pwv', express.static(path.join(__dirname, 'planetshah.com\\pwv')))
  • Mixes站点修改:
// 原代码
// musicMixApp.use(express.static(path.join(__dirname, 'planetshah.com\\mixes')))
// 修改后
musicMixApp.use('/mixes', express.static(path.join(__dirname, 'planetshah.com\\mixes')))

同时调整对应路由逻辑,比如PWV站点的get('/*')不需要再单独处理/favicon.ico,静态资源服务会自动匹配请求。

3. 优化缓存策略(可选)

给静态资源添加版本号或哈希值,强制浏览器在资源更新时重新请求:

<link href="/pwv/styles.css?v=1.0.0" rel="stylesheet"/>

也可以通过Express设置缓存控制头,平衡缓存效率和更新需求:

pwvApp.use('/pwv', express.static(path.join(__dirname, 'planetshah.com\\pwv'), {
  maxAge: '1d', // 设置1天的缓存有效期
  etag: true // 启用ETag验证,资源变化时自动触发更新
}))

4. 确认Bouncy转发逻辑有效性

当前Bouncy通过req.url.includes('/pwv')或/mixes转发请求的逻辑是可行的,但可以补充判断,避免误转发:

// 修改PWV的转发判断
else if (req.url.startsWith('/pwv') || req.url === '/pwv') {
    console.log('bouncing to 8004');
    bounce(8004);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:06:02