发现新文章

729 字
4 分钟
解决困扰我多时的JS重复请求问题
这篇文章记录了博客在接入动态访问量统计后,因 Swup 处理不当而产生重复请求的问题,以及最终的排查与修复过程
AI参与度 Lv.1/3 人工编写,AI润色

正文由作者完成,AI 主要用于措辞优化和语言打磨。

2025年11月18日 16:46:02
0 次

正式开始#

正如标题所说,我的博客是在 saicaca/fuwari: ✨A static blog template built with Astro. 的基础上深度改造而来的。

和 Fuwari 原版一样,它本质上仍然是一个 静态博客:文章以 Markdown 文件形式维护,构建后输出为 HTML。

但原项目在设计之初并没有重点考虑 动态功能,例如我现在用到的 访问量显示,因此后续接入这类能力时就容易出现一些问题。

关于访问量显示的整体思路,我已经在 这篇文章 中讲过。简单来说,它分为两步:1. 先获取全局分享 Token;2. 再使用这个 Token 请求实际访问量数据。

当时出现了一个比较奇怪的问题:第一步会发生多次重复请求。分析之后我发现,博客里有三个位置都用了同一套逻辑,而且彼此独立。也就是说,用户一打开页面,博客既会获取全站访问量,也会同时请求首屏几篇文章的访问量。

但这个全局分享 Token 在很长一段时间内其实都不会变化,这就导致出现了不少冗余请求。为了解决这个问题,我当时写了一个中间层:首次请求后把 Token 缓存在用户浏览器里,后续直接复用,不再重复请求。

不过后来还是有读者发现,某些页面依旧会多次请求 Umami,如图所示:

于是他提交了一个 issue:Bug: 站内转跳时由于swup处理不当导致的多umami实例 · Issue #79 · afoim/fuwari。问题的核心是 Swup 不应该接管这类脚本资源,把相关 JS 排除后,问题确实得到了解决。

按 issue 中的方法调整后,我们随便打开一个页面,再来分析一次请求情况: 我们只看Umami请求:

到这里,问题就算彻底解决了:没有多余实例,也没有冗余请求,整体请求链路也干净了很多。

这篇文章是否对你有帮助?

发现错误或想要改进这篇文章?

在 GitHub 上编辑此页

文章修订历史 (6 次)

查看变更记录
2026年2月25日 22:23:08 818735a

feat(posts): 为所有文章添加AI摘要并支持AI类型提示块

2026年2月9日 07:50:52 f6e3e17

压缩图片

2026年1月5日 12:49:58 d30dcdb

fix: 更新脚本和CSP中的域名从acofork.com到2x.nz

2025年12月14日 13:58:11 c5737b3

docs: 更新文章中的示例服务链接为相对路径

2025年11月20日 08:12:02 999a759

docs: 更新swup-js.md文档内容,添加一个换行

2025年11月18日 09:37:05 9b5614a

posts: 发布文章:解决困扰我多时的JS重复请求问题

解决困扰我多时的JS重复请求问题
作者
R-001
发布于
2025年11月18日 16:46:02
许可协议
CC BY-NC-SA 4.0