从零到上线:我用一个周末,给博客换了套骨架
起因很简单:老博客的首页打开要三秒。三秒不长,但足够一个人关掉页面、再也不回来。
一、先量,再改
动手之前先量了一遍,才有后面所有的取舍:
- 首屏资源 1.8 MB,其中图片占了 1.4 MB;
- 一次首页渲染打了 27 次数据库查询,其中 18 次是在取同一张表的不同字段;
- 没有缓存,每次访问都在现算。
二、三处改动
- 图片全部转 WebP,并按屏宽压出三档,首屏只加载当前档位;
- 把重复查询合并成一次批量查,27 次降到 6 次;
- 首页与列表页加 60 秒内存缓存,写完自动失效。
真正关键的其实只有这几行:
cached, ok := cache.Get(key)
if !ok {
cached = build()
cache.Set(key, cached, 60*time.Second)
}
三、结果与代价
首屏从 3.1 秒掉到 0.8 秒。代价是缓存失效的逻辑多了一处要维护—— 性能从来不是免费的,它只是把成本换了个地方付。
如果你的站点也在卡,欢迎把「量出来的数字」贴到营地留言里,我们一起看看瓶颈在哪。
这条留言住在「代码篝火」。营地是大家聊天的地方,这里是一句话被单独留下、可以慢慢读的地方。