温馨提示×

Linux服务器上Node.js如何配置缓存策略

小樊
41
2025-12-30 03:39:49
栏目: 云计算

在Linux服务器上配置Node.js应用的缓存策略,可以通过多种方式实现,包括使用HTTP缓存头、内存缓存、分布式缓存系统等。以下是一些常见的方法:

1. 使用HTTP缓存头

HTTP缓存头可以让浏览器和中间代理服务器缓存资源。你可以在Node.js应用中设置这些头信息。

示例代码(使用Express框架):

const express = require('express');
const app = express();

app.use(express.static('public', {
  maxAge: '1d', // 设置缓存时间为1天
  setHeaders: (res, path) => {
    if (path.endsWith('.js') || path.endsWith('.css')) {
      res.set('Cache-Control', 'public, max-age=31536000'); // 1年
    }
  }
}));

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

2. 使用内存缓存

内存缓存是一种快速但有限的缓存方式,适用于小型应用或缓存少量数据。

示例代码(使用lru-cache库):

const express = require('express');
const LRU = require('lru-cache');
const app = express();

const cache = new LRU({ max: 100, maxAge: 1000 * 60 * 60 * 24 }); // 1天

app.get('/data', (req, res) => {
  const data = cache.get('key');
  if (data) {
    return res.send(data);
  }
  const newData = fetchData(); // 模拟获取数据
  cache.set('key', newData);
  res.send(newData);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

3. 使用分布式缓存系统

对于大型应用或需要跨多个服务器共享缓存的情况,可以使用分布式缓存系统,如Redis或Memcached。

示例代码(使用Redis):

const express = require('express');
const redis = require('redis');
const app = express();

const client = redis.createClient();

client.on('error', (err) => {
  console.log('Error ' + err);
});

app.get('/data', (req, res) => {
  client.get('key', (err, data) => {
    if (data) {
      return res.send(JSON.parse(data));
    }
    const newData = fetchData(); // 模拟获取数据
    client.setex('key', 31536000, JSON.stringify(newData)); // 1年
    res.send(newData);
  });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

4. 配置Nginx作为反向代理

如果你使用Nginx作为反向代理,可以在Nginx配置中设置缓存策略。

示例配置:

server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
  }

  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
}

总结

选择合适的缓存策略取决于你的应用需求和规模。对于小型应用,内存缓存可能足够;而对于大型应用,分布式缓存系统如Redis或Memcached可能是更好的选择。同时,合理设置HTTP缓存头和使用Nginx作为反向代理也可以显著提高应用的性能。

0