TwKit
正在载入
TwKit

API 提速,先看时间花在哪。分页、异步日志、缓存、压缩、连接池,分别省的是不同环节的活,别一股脑当成同一招。 ① 少搬一大坨结果。 结果分页把大结果集拆成… · @BaiBtw · TwKit

@BaiBtw

API 提速,先看时间花在哪。分页、异步日志、缓存、压缩、连接池,分别省的是不同环节的活,别一股脑当成同一招。 ① 少搬一大坨结果。 结果分页把大结果集拆成多页,客户端分批拿。图里是 page 1、2、3,不必一口气把所有记录塞回去;分页本身也不等于底层用了流式传输。 ② 别让每条日志都卡着磁盘。 异步日志先写进缓冲区,再由后台定期刷盘。这里给出的做法是无锁环形缓冲区:调用方放入日志后返回,把频繁等待磁盘的开销从请求路径移开。 ③ 常用数据别每次都从数据库重找。 先查缓存,命中就直接返回;没命中再查数据库,并更新缓存。Redis 这类内存存储常用于这一层,收益来自减少重复查询和更快的数据访问。 ④ 让网络少搬字节。 请求体和响应体都可以压缩,例如 gzip。压缩针对的是传输的数据量,上传、下载需要搬的内容变小,并不是把数据库查询变快了。 ⑤ 连接用完放回去,别每次重建。 连接池保留一组已打开的数据库连接,应用取用后归还,由池管理生命周期。它省掉反复建立、关闭连接的成本,让连接能复用。 把这五件事串起来:分页管结果规模,日志管写盘等待,缓存管重复读取,压缩管传输体积,连接池管建连开销。优化哪一层,得先知道慢在哪一层。

曝光 15 · 评论 0 · 点赞 0 · 书签 0

查看原帖