关于 api-response-optimization
面向 API 开发的响应优化指南,帮助缩减负载并改善传输效率,涵盖字段选择、HTTP 缓存头和响应压缩。
主要功能
- 01按客户端选择响应字段
- 02基于 ETag 的条件响应
- 03HTTP 响应压缩
- 04缓存与分页实践
适用场景
- 01减少返回给客户端的字段
- 02避免重复传输未更改的数据
- 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