💡
原文英文,约1400词,阅读约需5分钟。
📝
内容提要
我们在支持17万用户的SNS后端团队中,使用Jbuilder生成API响应。通过使用props_template替代部分渲染,平均渲染时间从289.02ms降至151.34ms,性能提升了30%。
🎯
关键要点
- 支持17万用户的SNS后端团队使用Jbuilder生成API响应。
- 通过使用props_template替代部分渲染,平均渲染时间从289.02ms降至151.34ms,性能提升了30%。
- Jbuilder是Ruby on Rails中用于生成JSON响应的领域特定语言。
- 在应用中,构建单个响应负载通常涉及调用20到30个部分文件,部分文件的渲染时间可达500ms。
- 使用New Relic分析发现,部分渲染占用了API响应时间的最大部分。
- 调查发现partial!方法的性能问题,render方法和文件查找过程是导致渲染性能下降的关键因素。
- 将操作从部分文件直接移入调用者,平均渲染时间减少了42.5%。
- 考虑到维护性,减少partial!方法调用并不是一个实际的解决方案。
- props_template是一个轻量级快速生成JSON的库,语法与Jbuilder相似。
- 使用props_template的部分渲染可以通过带键和不带键的两种方式进行。
- 将Jbuilder替换为props_template后,平均渲染时间减少了47.6%。
- 在生产环境中,渲染时间改善了约30%,95百分位响应时间从2.11s降至1.57s,改善约26%。
- 未来计划在其他API中应用类似的改进,并继续优化数据结构、SQL索引、缓存等领域。
❓
延伸问答
如何通过使用props_template减少API响应的渲染时间?
使用props_template替代部分渲染,平均渲染时间从289.02ms降至151.34ms,性能提升了47.6%。
Jbuilder是什么,它在API响应中有什么作用?
Jbuilder是Ruby on Rails中用于生成JSON响应的领域特定语言,允许开发者直观地构建JSON响应。
在渲染API响应时,部分渲染占用了多少时间?
部分渲染占用了API响应时间的最大部分,导致性能下降。
使用New Relic分析API性能时发现了什么问题?
分析发现,部分渲染和SQL执行占用了大部分的响应时间,特别是部分渲染的性能问题。
在生产环境中,渲染时间改善了多少?
在生产环境中,渲染时间改善了约30%,95百分位响应时间从2.11s降至1.57s,改善约26%。
未来对API的优化计划是什么?
未来计划在其他API中应用类似的改进,并继续优化数据结构、SQL索引、缓存等领域。
➡️