mcpField
A
api-response-optimization

api-response-optimization

github.com/secondsky开发242429 次安装5 周前更新
代码仓库

关于 api-response-optimization

面向 API 开发的响应优化指南,帮助缩减负载并改善传输效率,涵盖字段选择、HTTP 缓存头和响应压缩。

主要功能

  1. 01按客户端选择响应字段
  2. 02基于 ETag 的条件响应
  3. 03HTTP 响应压缩
  4. 04缓存与分页实践

适用场景

  1. 01减少返回给客户端的字段
  2. 02避免重复传输未更改的数据
  3. 03压缩较大的 API 响应

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/claude-skills --skill api-response-optimization

安装后在 Claude Code 中输入/api-response-optimization确认已加载。

详细介绍

API 响应优化

缩小负载、实现缓存并启用压缩,让 API 响应更快。

稀疏字段集

// Allow clients to select fields: GET /users?fields=id,name,email
app.get('/users', async (req, res) => {
  const fields = req.query.fields?.split(',') || null;
  const users = await User.find({}, fields?.join(' '));
  res.json(users);
});

HTTP 缓存标头

app.get('/products/:id', async (req, res) => {
  const product = await Product.findById(req.params.id);
  const etag = crypto.createHash('md5').update(JSON.stringify(product)).digest('hex');

  if (req.headers['if-none-match'] === etag) {
    return res.status(304).end();
  }

  res.set({
    'Cache-Control': 'public, max-age=3600',
    'ETag': etag
  });
  res.json(product);
});

响应压缩

const compression = require('compression');

app.use(compression({
  filter: (req, res) => {
    if (req.headers['x-no-compression']) return false;
    return compression.filter(req, res);
  },
  level: 6  // Balance between speed and compression
}));

性能目标

指标目标
响应时间<100ms(从 500ms 降至)
负载大小<50KB(从 500KB 降至)
服务器 CPU<30%(从 80% 降至)

优化检查清单

  • 从响应中移除敏感或不必要的字段
  • 实现稀疏字段集
  • 添加 ETag/Last-Modified 标头
  • 启用 gzip/brotli 压缩
  • 对集合使用分页
  • 预先加载,避免 N+1 查询
  • 使用 APM 工具进行监控

最佳实践

  • 积极缓存不可变资源
  • 对频繁变化的数据使用较短的 TTL
  • 写入时使缓存失效
  • 压缩大于 1KB 的响应
  • 优化前先进行性能分析

评论

支持 Markdown