最近看博客,总觉得它有点像我本人:功能越来越多,细节越来越顺手,但也越来越容易在不该用力的地方使劲。
首页有 Banner,文章页有图片灯箱,所有页面有滚动条增强、主题切换、Swup 换页、搜索、侧栏卡片……单独看都还行,堆在一起就开始值得算账了。
于是这次不做那种“Lighthouse 红了,随便删两个库”的优化,而是把每一项东西都问了一遍:你是不是每一页、每一台设备、每一秒都必须存在?
顺手还往右下角塞进了一只看板娘。
先把全站常驻的东西拆开
之前 PhotoSwipe 灯箱逻辑放在全局 Layout 里。意思是无论你是在首页看文章卡片、去归档翻旧文,还是打开一个根本没图的页面,浏览器都得准备好一整套图片灯箱。
这就有点像去便利店买瓶水,店员先把投影仪、幕布和音响搬出来待命。
现在它被拆成了独立的 Lightbox 组件:
- 只有文章页、关于页和碎碎念页会挂载它;
- 只有页面里真的存在正文图片或封面图时,才会动态导入 PhotoSwipe;
- 没图的页面不会下载灯箱主体,也不会初始化相关事件。
功能没少,图片点开还是能放大、缩放、关闭;只是没图的地方终于不用为这件事提前买单。
手机端别再硬上自定义滚动条
桌面端的 OverlayScrollbars 看着不错,代码块横向滚动也比较顺手。
但手机上,本来就有原生滚动、惯性、回弹和系统级手势。为了把滚动条“美化”一下,再额外加载脚本和样式,多少有点本末倒置。
所以现在的策略很简单:
- 细指针的桌面设备才启用 OverlayScrollbars;
- 而且等浏览器空闲后再动态导入;
- 触控设备直接使用原生滚动。
这不是“功能降级”,而是承认手机浏览器在滚动这件事上,确实比我这点 JavaScript 更懂用户。
字体也得克制
之前页面通过 Google Fonts 一口气加载了好几套字体和字重。视觉上当然没问题,但每次首访都得多一次跨域请求、多一段 DNS/TLS 流程,还要看网络和 CDN 心情。
一开始我本来想把中文字体整个本地化,后来发现这事不太对。
完整的中文字体不是一张小图标,光常规字重就是大文件;即使做了分片,页面里也会出现一串字体请求。为了“本地化”把首屏拉得更重,那就属于为了治头疼把脑袋卸了。
最后定了一个比较现实的平衡:
- 保留本地的 Lora 拉丁字形,只留下 400 和 700 两个常用字重;
- 中文回归系统字体栈,让不同设备用自己最合适的中文字体;
- 移除不再使用的 Plus Jakarta Sans;
- 顺手删掉了一大段已经没有播放器使用的 APlayer 样式。
现在站点不再依赖 Google Fonts,Lora 的两个 WOFF2 文件加起来也就四十多 KB。该省省,该让系统干活就让系统干活。
然后,右下角多了一只鲸鱼娘
性能账算完之后,当然要干点不那么“理性”的事。
我看到 whale-girl 这个桌宠项目时,第一反应是:这东西放博客右下角应该很合适。
但它本身是给 DSH 用的插件,不是拿个 <script> 往 Astro 里一塞就能跑的网页组件。它依赖一套状态接口、事件流和资源路由。为了一个看板娘再给博客接一套常驻服务端,不值当。
于是走了另一条路:只使用角色精灵素材,交互逻辑全部自己写。
首版保留了七种最有用的状态:
idle:平时发呆;think:思考;working:认真营业;celebrate:发现好东西时庆祝;error:留给以后做小彩蛋;welcome:第一次见面打招呼;drag:被拎着到处挪时的状态。
原始七张 PNG 精灵表大约 1MB。我把它们转成保留透明通道的 WebP,最后总大小约 224KB。
更重要的是,它不会一上来就把全部动作图拉下来:
- 首屏只用
idle; - 第一次互动后,其他状态才在后台准备;
- 没点她之前,她就是一只安静待着的鲸鱼娘,不抢首页带宽。
看板娘该有的基本礼貌
看板娘最怕两个问题:挡内容,和赖着不走。
所以这里给她定了几条规矩:
- 桌面端默认在右下角,能拖拽,位置会保存在本地。
- 手机端默认折叠成小入口,点开才展开,别一进站就占半个屏幕。
- 点击会有随机台词和爱心特效,但遵循系统的“减少动态效果”设置。
Escape可以收起,右上角按钮也能缩回入口。- 她挂在
body的直属层,不在 Swup 的页面替换区域里,所以站内换页不会反复重建出好几只。 - 开启文章的禅定模式时,她也会淡出,不来打扰你看字。
看板娘不需要知道我正在写什么,也不需要连任何后端。她只要在你点一下时说两句话,被拖走时老实进入拖拽状态,偶尔自己发会儿呆,就够了。
这轮改完之后
这次没有做什么“把所有东西砍掉,博客快了 300%”的神话。
做的事情更朴素:
- 无图页面不再带着图片灯箱跑;
- 手机不再为了自定义滚动条多背一份脚本;
- 字体不再依赖外部服务,也不硬塞巨大的中文字库;
- 无用播放器样式被清掉;
- 新加的看板娘也按首屏资源预算来,不搞一只 2MB 的右下角装饰品。
性能优化不是让网站看起来像一张白纸。
真正舒服的状态应该是:该出现的东西有存在感,不该出现的东西安静消失。现在右下角那只鲸鱼娘会动,会聊天,会被拖走;但在你还没理她之前,她不会抢走任何不属于她的注意力。



评论