要计数器还是要分析套件?
对标题中这个问题,诚实的答案是:这取决于希望统计数据回答什么问题。访客计数器和完整的分析套件,并不是同一种工具的两个档次。它们回答的是不同的问题,而给出答案所要付出的代价也不同。本文要谈的,正是这些代价究竟是什么。
计数器会让访客付出什么代价
以下是本站今天实测的数据,而非估算。一个 Stats4U 计数器会让访客付出两次请求的代价:
- 脚本文件 s4u.js——gzip 压缩后 3,311 字节(原始大小 8,709 字节)
- 计数器图像——PNG 格式,3,325 字节
加起来大约 6.6 KB,只需一次,这就是全部。没有框架,没有第一个脚本再加载第二个脚本的情况,中间也不存在标签管理器容器。选用隐形计数器时,那就连图像都没有,代价还会更低。
站点的服务器上也不需要运行任何东西。页面只需嵌入一张图像和一小段脚本,计数、存储和图表绘制都在我们这边完成。不需要安装任何软件包,不需要维护数据库,也不需要惦记着哪个 cron 任务会不会被遗忘。
不设 Cookie,默认也不读取设备信息
计数路径不会设置任何 Cookie。这不是一句承诺,而是可以在终端里直接验证的事情:
- curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie
没有任何输出,就是预期的结果。
访客之间的区分,依靠的是一个按天生成的哈希值,由 IP 地址、用户代理、计数器 ID、日期,以及一个每天更换的盐值共同构成。这个哈希值为 16 字节,保留2天。IP 地址本身从不会被记录下来。每日盐值会在2天后被删除,这意味着此后任何人——包括运营本站的人在内——都无法针对某个可疑地址反推出某一天的哈希值。
会存储什么、存储多久:
- 页面地址——400 天
- 来源域名(仅域名本身,而非完整链接)——400 天
- 浏览器语言(以计数形式存储,而非按访客存储)——400 天
- 国家与城市,根据请求发生时的地址推算得出
- 当日哈希值——16 字节,2天
不会存储的内容:IP 地址,以及访客设备上的任何信息。屏幕分辨率只在站点所有者开启的地方才会存储。
以上说明的是这套软件的实际行为。至于这是否足以满足某个地区所要求的合规义务,则是另一个问题,需要由具备相应资质的人来回答。本文并不是那个答案。
计数器做不到的事
一篇只罗列优点的文章不值得一读,所以这里也谈谈另一面。计数器无法回答下面这些:
- 访客是如何在多步骤转化漏斗中移动的,又是在哪一步流失的
- 三月份来访的人,是否在六月份又回来了
- 哪个营销活动在金钱上收回了成本
- 页面内部发生了什么——按了哪些按钮、播放了哪些视频、放弃填写了哪些表单字段
- 周二用手机来访的和周四用桌面设备来访的,是否是同一个人
- 一个页面的两个版本,哪一个表现更好
上面这每一项,都需要一个持久保存的身份标识、从页面内部发出的事件,以及较长的数据保留期限。而这些,恰恰是前文中被舍弃掉的东西。如果某项业务依赖于其中任何一项——比如一家网店需要知道哪条广告收回了成本——那么计数器就是错误的工具,再怎么轻量也弥补不了这一点。这种情况下就该用重型工具,接受它随之带来的一切,并把这件事明确告知访客。
什么人更适合用计数器
当问题更小、这样的答案就已经足够时,计数器就是合适的选择:
- 个人网站、博客、作品集、社团与学校页面
- 静态托管平台——GitHub Pages、Neocities,以及其他没有服务器日志可查的地方
- 真正想问的问题其实是有没有人在读这个,他们又是怎么找到这里的的任何人
- 不想为了得到答案,就把自己的访客交给第三方的任何人
互联网上的大多数网站都是这样。分析行业是为并非如此的那一部分而打造的,而人们很容易忘记,其余的我们,也有权只想要少一点的东西。
更新(2026 年 9 月 11 日):自 2026 年 8 月 27 日起,脚本又开始在每一个嵌入了它的网站上读取屏幕分辨率、浏览器窗口宽度和像素比。自 2026 年 9 月 11 日起,它只在站点所有者用 data-screen="1" 开启的地方这样做。没有这个属性,当前的脚本三项都不读取,服务器也不再保存由旧版副本发来的这些数值。