首页主机资讯如何在Ubuntu上配置Node.js缓存策略

如何在Ubuntu上配置Node.js缓存策略

时间2025-12-03 17:21:03发布访客分类主机资讯浏览774
导读:在 Ubuntu 上配置 Node.js 缓存策略 一 概念与目标 面向 Node.js 的缓存通常包含三类: 依赖安装缓存:npm/Yarn 的下载与解压缓存,影响安装速度与磁盘占用。 HTTP 运行时缓存:通过响应头控制浏览器与 C...

在 Ubuntu 上配置 Node.js 缓存策略

一 概念与目标

  • 面向 Node.js 的缓存通常包含三类:
    • 依赖安装缓存:npm/Yarn 的下载与解压缓存,影响安装速度与磁盘占用。
    • HTTP 运行时缓存:通过响应头控制浏览器与 CDN/反向代理的缓存行为。
    • 数据层缓存:进程内或外部缓存(如 Redis)降低数据库压力、提升响应。

二 配置依赖安装缓存

  • 选择合适目录并配置 npm 缓存路径(示例将缓存放到 /opt/node-cache):
    • 创建目录并赋权:
      • sudo mkdir -p /opt/node-cache
      • sudo chown -R $USER:$USER /opt/node-cache
    • 配置 npm 使用该目录(写入用户级配置,避免需要 sudo):
      • npm config set cache /opt/node-cache
    • 验证:npm config get cache 应返回 /opt/node-cache
  • 如需自定义全局包目录(可选,避免与系统目录混用):
    • npm config set prefix /opt/node-global
    • /opt/node-global/bin 加入 $PATH(写入 ~/.bashrc 或 /etc/profile.d/node.sh):
      • echo ‘export PATH=/opt/node-global/bin:$PATH’ > > ~/.bashrc & & source ~/.bashrc
  • 使用 Yarn 时(可选):
    • 设置缓存目录:yarn config set cache-folder /opt/yarn-cache
    • 验证:yarn config get cache-folder
  • 清理无用的包缓存(维护时执行):
    • npm cache clean --force
  • 说明:Node.js 运行时本身不处理 HTTP 缓存,HTTP 缓存需由框架/中间件设置响应头实现。

三 配置 HTTP 缓存策略

  • Express 中按路由设置 Cache-Control,区分静态资源与动态接口:
    • 静态资源(长期缓存,配合文件名哈希):
      • app.use(‘/static’, express.static(‘public’, { maxAge: ‘365d’, immutable: true } ));
    • 动态接口(不缓存或短缓存):
      • app.get(‘/api/data’, (req, res) => { res.set(‘Cache-Control’, ‘no-store’); // 或 ‘private, max-age=60’ res.json({ ts: Date.now() } ); } );
  • Koa 中使用 ctx.set 设置相同响应头;在 Hapi 可在路由 options 中配置缓存插件或 cache.expiresIn
  • 建议组合策略:
    • 对带内容哈希的静态资源使用:public, max-age=31536000, immutable
    • 对频繁变动的页面/接口使用:no-storeprivate, max-age=0, must-revalidate
    • 对可共享但对单用户私有的数据:private, max-age=60

四 配置数据层缓存

  • Redis 为例,作为外部缓存提升读多写少场景的性能:
    • 安装与启动:
      • sudo apt update & & sudo apt install -y redis-server
      • sudo systemctl enable --now redis-server
      • redis-cli ping 应返回 PONG
    • 在 Node.js 中使用 ioredis 读写缓存(TTL 示例为 60 秒):
      • 安装:npm i ioredis
      • 代码示例:
        • const Redis = require(‘ioredis’);
        • const redis = new Redis();
        • async function getData(id) { const key = user:${ id} ; let data = await redis.get(key); if (data) return JSON.parse(data); data = await db.query(‘SELECT …’); // 伪函数 await redis.set(key, JSON.stringify(data), ‘EX’, 60); return data; }
  • 适用场景:会话存储、热点数据、计算结果、接口响应缓存等。

五 持续集成中的缓存优化

  • GitHub Actions 等 CI 中缓存依赖目录,显著缩短安装耗时:
    • 示例(npm):
        • uses: actions/cache@v3 with: path: ~/.npm key: ${ { runner.os } } -node-${ { hashFiles(‘**/package-lock.json’) } } restore-keys: ${ { runner.os } } -node-
    • 可叠加缓存构建产物目录(如 dist/build/)以加速后续步骤。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上配置Node.js缓存策略
本文地址: https://pptw.com/jishu/762535.html
Debian如何安全开启Telnet 如何在Ubuntu上配置Node.js中间件

游客 回复需填写必要信息