博客统计从不蒜子迁移到 Vercount

1374 字
7 分钟
博客统计从不蒜子迁移到 Vercount
2026-10-26
浏览量 加载中...

起因#

博客侧边栏的站点统计组件里,总访问量和访客数一直靠不蒜子提供。但它经常不稳定,页面上的数字一直卡在 ...,刷新很多次也出不来。

查了一下,不蒜子有几个已知问题:

  • 用的人多时容易 502,速度慢
  • 靠 Referrer 判断来源,在移动端和部分浏览器上统计不准
  • 使用 JSONP 回调,有一定的安全隐患

Vercount 是一个不蒜子的替代方案,号称响应更快、可用性更高,兼容不蒜子的 span 标签,并且会自动从不蒜子迁移已有数据,于是决定换过去试试。

Vercount 简介#

Vercount 基于 NextJS + Redis,部署在 Vercel 上,主要特点:

  • 响应速度快,使用全球 CDN
  • 用 POST 请求统计,不依赖 Referrer
  • 兼容不蒜子的 busuanzi_value_site_pv 等 id,切换成本低
  • 支持自托管
  • 登录并验证域名后,可以在后台编辑访问量和访客数

迁移步骤#

因为我的组件里已经用 id 加同步脚本处理好了数字的回填,所以只需要换脚本地址。

原来的代码:

// 加载不蒜子脚本
if (!document.querySelector('script[src*="busuanzi.pure.mini.js"]')) {
const script = document.createElement('script');
script.src = "//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js";
script.async = true;
document.head.appendChild(script);
}

改成:

// 加载 Vercount 脚本
if (!document.querySelector('script[src*="vercount.one"]')) {
const script = document.createElement('script');
script.src = "https://events.vercount.one/js";
script.async = true;
document.head.appendChild(script);
}

下面的 busuanzi_value_site_pv / busuanzi_value_site_uv 隐藏元素和同步逻辑不需要改动。提交推送,博客自动编译发布即可。

遇到的问题:数字变成了 1#

发布后,页面上的访问量和访客数都变成了 1,原来的数字没有迁过来。

官方 README 说数据会自动从不蒜子迁移,但我这里没成功。我的推测是:迁移发生的那一刻,不蒜子那边的请求刚好失败了(它本来就不稳定),Vercount 就把这个域名当成新站点,从头开始计数。这只是推测,并没有官方说明。

另外要注意,Vercount 是按域名记录的。我的博客地址是 blog.jcaonet.com,主域名 jcaonet.com 做了 301 跳转到 blog。访客的浏览器不会在主域名上加载页面,所以统计数据全部挂在 blog.jcaonet.com 下面,验证和修改时都应该填这个。

先找回原来的数字#

数字存在不蒜子的服务器上,不在网站代码里。要看原来的值,得让不蒜子再显示一次:

  1. 看有没有没刷新过的旧页面,或者旧截图
  2. 把统计临时改回不蒜子(用 git revert 撤销迁移那次提交,推送发布)
Terminal window
git log --oneline -5 # 找到迁移那次提交的哈希
git revert <哈希> # 生成撤销提交
git push

我回退之后,打开页面用浏览器开发者工具(F12 → Network,过滤 busuanzi)查看,发现:

  • busuanzi.pure.mini.js 返回 200,脚本本身加载正常
  • busuanzi?jsonpCallback=... 返回 502

也就是说,不蒜子服务器当时就是不可用,不是我的代码有问题。Console 里 ERR_BLOCKED_BY_CLIENT 的报错是广告拦截插件拦截了 Google Tag Manager 等脚本,和计数无关。

遇到这种情况,只能隔一段时间再刷新,等它恢复后马上记下原数字。

在 Vercount 后台修改数字#

Vercount 后台(vercount.one)登录后,进入 Domains 页面,添加域名 blog.jcaonet.com。添加后状态是 Pending verification,需要先验证域名所有权,才能使用 Edit 修改数据。

验证有两种方式:

  • DNS Record:到域名解析服务商添加一条 TXT 记录。页面会给出记录名(类似 _vercount.blog.jcaonet.com)和值,值要直接复制,不要手打。很多解析服务商会自动补上主域名,所以”主机记录”通常只需要填 _vercount.blog。
  • File Upload:按页面提示把验证文件放进项目的 public/ 目录,发布后通过网址能访问到,再点验证。对于推送后自动发布的 Astro 博客,这种方式不用动 DNS,更省事。

验证通过后,就可以用 Edit 把访问量和访客数改回原来的值。

为什么 Vercount 要验证,不蒜子不用#

不蒜子没有账号和后台,只是按域名给计数加 1,也不能修改数字,所以不需要知道域名是谁的。Vercount 有后台和修改功能,如果不验证,任何人都能注册你的域名并改你的数字,所以修改数据前必须证明域名属于你。据 README,验证是用来编辑数据的,正常计数本身不需要验证。

需要留意的点#

  • 有人反馈过,Vercount 叠加不蒜子数据时,访问量会叠加,访客数不会,规则不一致。改完之后建议分别核对这两个数。
  • 页面切换时(Swup)数字能否正常刷新,需要实际测试,我没有找到官方说明。
  • 有用户提到 Vercount 会先显示缓存的旧数据,再更新成新数据,属于小缺点。

总结#

迁移本身只需要改一行脚本地址,成本很低。真正麻烦的是历史数据:自动迁移不一定成功,成功与否取决于迁移那一刻不蒜子的服务是否可用。如果你也打算迁移,建议:

  1. 迁移前先记下不蒜子当前显示的访问量和访客数
  2. 迁移后检查数字有没有被重置
  3. 如果被重置,在 Vercount 后台验证域名后手动改回去

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

评论区

Profile Image of the Author
加菲魚
堆内存中的一个持久化对象。
分类
标签
站点统计
文章
30
分类
6
标签
20
总字数
38,251
访问量
...
访客数
...
运行时长
0 天
最后活动
0 天前

目录