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