PR #294:用 @igng/ui/SiteHeader 终结十个站点十套页眉

虽然我们在 7 月份就已经合进了 Monorepo,但各个子站顶部的导航页眉(Header)一直沿用着合并前各自手写的组件:有的站点切深色模式按钮在左边,有的在右边;有的下拉菜单能切分站,有的又没有。

到了 2026 年 10 月 29 日(PR #294),我终于抽出手来把所有站点的旧页眉全部铲平,在 @igng/ui 里写了一个高度统一的 SiteHeader 组件。不管是主站、论坛还是文档站,页眉采用了统一的公共站和控制台两种样式,各站仍保留自己的搜索、通知等功能。趁着这次改版,我还一口气重做了三个门面站点的首页:把主站改成了能实时预览各站动态的频道橱窗,把项目站做成了带多端设备外壳的交互展示台,把云服务推广站改成了直观的场景化优惠票根卡片。

region.mjs 唯一真源与日本节点的“48小时一日游”

当时国内不少玩家反馈直连主域名有时会遇到跨网晚高峰抖动。为了让大家在任何网络环境下都能秒开网页,我在 10 月 28 日至 29 日(PR #322 / #331)设计了一套多地域分站架构: 我写了一个全仓唯一的地域规则真源 region.mjs,并实现了渲染期链接自动本地化——当用户访问国内加速分站(-cn)或香港分站(-hk)时,符合规则的跨站链接会在渲染时改写成同地域的对应域名;没有部署分站的站点则回退主站。

这期间还发生了一段挺有意思的小插曲:10 月 28 日 那天,我兴冲冲地多开了一个日本东京分站(-jp),本来想着物理距离近、延迟肯定低。结果上线跑了不到两天,实测发现那台东京网关到源站的国际链路经常莫名其妙丢包抽风,体验反而还不如直连。我没跟沉没成本较劲,在 10 月 30 日(PR #373)手起刀落直接砍掉了整个日本分站,把所有 -jp 流量全量 301 重定向回主站,保留主站、国内站和已发布的香港站入口,香港未发布的站点则回退主站。

保加利亚 Sofia 大容量媒体源站上线

砍掉日本节点的同一天(10 月 30 日),为了彻底解决个人云盘和论坛高清大图越来越占硬盘的问题,我们把保加利亚 Sofia(索菲亚) 的一台大盘独立服务器正式接入为全站主媒体源站,前面套上 Cloudflare 全球边缘缓存。虽然保加利亚离国内有半个地球远,但靠着内容寻址(SHA256 不可变 URL)配合超长边缘缓存策略,图片可以由边缘节点缓存,减少重复请求源站的压力;缓存命中情况仍取决于节点和缓存策略。