Linux下Node.js的缓存策略主要包括以下几类,可根据场景选择:
-
HTTP缓存
通过设置响应头(如Cache-Control、ETag)控制客户端或代理服务器缓存,适用于静态资源或低频更新数据。res.set('Cache-Control', 'public, max-age=3600'); // 缓存1小时 -
内存缓存
- 简单对象缓存:直接用JavaScript对象或
Map存储数据,适合临时数据。 - 第三方库:
node-cache:支持过期时间、自动清理。lru-cache:基于LRU算法,适合缓存大小有限的场景。
const NodeCache = require('node-cache'); const cache = new NodeCache({ stdTTL: 300 }); // 5分钟过期 cache.set('key', 'value'); - 简单对象缓存:直接用JavaScript对象或
-
文件缓存
将数据持久化存储到文件系统,适合需跨进程或重启后保留的缓存,如配置文件。const fs = require('fs'); fs.writeFileSync('cache.json', JSON.stringify(data)); const cachedData = JSON.parse(fs.readFileSync('cache.json')); -
分布式缓存
适用于多实例、高并发场景,通过Redis、Memcached等实现跨服务共享缓存。- Redis示例:
const redis = require('redis'); const client = redis.createClient(); client.setex('key', 3600, JSON.stringify(data)); // 缓存1小时
- Redis示例:
-
其他策略
- CDN缓存:用于静态资源分发,减轻服务器压力。
- 数据库查询缓存:对频繁查询的结果进行缓存,减少数据库负载。
选择策略时需权衡数据一致性、性能需求和系统复杂度,例如高频数据用内存缓存,跨服务数据用分布式缓存。