node代理层
用下面三个方法进行优化:

  • 按需加载 -> graphQL
  • 数据缓存 -> redis
  • 轮询更新 -> schedule

1.graphQL按需加载数据只需要三步:

  • 定义数据池 root
  • 描述数据池中数据结构 schema
  • 自定义查询数据 query

2.使用redis缓存

redis来缓存接口的聚合数据,下次再调用接口,直接从缓存中获取数据即可,避免高耗时的复杂调用

3.node-schedule定时更新缓存

  1. const schedule = require('node-schedule');
  2. const { promisify } = require("util");
  3. const redis = require("redis");
  4. const client = redis.createClient(6379, '127.0.0.1');
  5. // promise化
  6. const setAsync = promisify(client.set).bind(client);
  7. // 每个小时更新一次缓存
  8. schedule.scheduleJob('* * 0 * * *', async () => {
  9. const data = require('./girls.json');
  10. // 设置redis缓存数据
  11. await setAsync("缓存", JSON.stringify(data));
  12. });
  13. console.log('每个小时更新一次缓存');