零后端访问计数:先能测量,再谈渠道

给静态站加一个「有没有人来」的读数。不需要账号、不需要后端、不写 Cookie、不改托管商。12 行代码,一次粘进去。

为什么是这件事。静态托管(GitHub Pages、Cloudflare Pages、Vercel 静态、任何纯文件托管)不给你访问日志。Google Analytics 要账号 + 同意横幅(欧盟还要 cookie 政策)。Plausible 起步 $9/月、Fathom 与 Simple Analytics 同一价格带(三个定价页 2026-10-20 实测 200)。如果你现在的目标只是「到底有没有人打开过这一页」,为这一个数字付月费、再挂一个第三方脚本,性价比很差。先能测量,再谈渠道——顺序反了,会把「没人来」误判成「产品不行」。

一 · 生成埋点(60 秒)

点上面的按钮生成。

命名空间和 key 只允许字母、数字、-、_。整段贴在 </body> 之前。已存在的页面也可以贴,它不会阻塞渲染,失败也不报错。

二 · 读回读数(只读,不会虚增)

计数器的 API 有两个动词,读数必须用 /get:

请求行为什么时候用
GET /hit/<ns>/<key>计数 +1,返回新值只在页面加载时自动调用
GET /get/<ns>/<key>只读,计数不变你自己查数时用

在下面填你自己的 ns / key,直接查:

页面加载次数
—
尚未查询

404 是确定的 0(这个 key 从没被 hit 过)。超时、429、5xx 一律显示「读不到」,不要当成 0 —— 把「测不到」写成 0 是所有数据错误里最常见的一种。

三 · 它到底测的是什么(这一段比代码重要)

它是「页面加载次数」,不是「独立访客」。

四个必须分开的变量

你真正想知道的用什么测它不能回答什么
有没有人打开这一页本页的 /hit 计数(每页一个 key)是不是人、看了多久
人从哪个渠道来链接上带 ?ref=<渠道>,埋点会存进 localStorage.pv_ref_last同一人多次点击的路径
有没有人愿意留联系方式表单收件(FormSubmit 之类,零后端)留了之后会不会付费
有没有人付钱支付后台的成交记录——

这四列不能互相替代。本项目自己踩过的坑:连续 13 天把「零收入」当成「产品不行」,实际是第 1 列从来没有被测量过——20 个页面里 0 个有埋点。

四 · 两个可直接用的脚本

批量给一个静态目录里所有 index.html 植入埋点(幂等、无备份文件、可 --revert 剥离),以及只读回读数:

零依赖,Node 18+ 直接跑(用到内置 fetch 与 AbortSignal.timeout)。不要把 *.bak 留在站点目录里再一键部署——本项目 10-19 就是这样把 15 个备份文件一起推上线的。两个脚本都不产生备份文件。

五 · 本项目的实测记录(如实)

项目读数口径与日期
本站 20 个页面埋点数0 / 202026-10-14 全站 grep 审计:0 页记录访问
本站 dev.to 文章累计浏览1086 篇,dev.to API /articles/me/published,2026-10-20 实读
本站表单外部真实提交0上线 24 小时后查收件箱:8 封全部是作者自测
本站被 Bing 收录数未取到对照查询 site:dev.to 同样返回「无结果」⇒ 探针本身失效,不是 0

这张表就是这一页存在的理由:前 19 天里,第 1 行是空白。空白不等于 0,空白等于「你什么都不知道」。

六 · 常见问题

会不会被广告拦截器拦掉?

会有一部分。拦截器主要拦已知分析域名,这个 API 不是常见分析域名,但仍在拦。这意味着计数只会偏低,不会偏高——偏低可以当「至少来了这么多」,偏高才是灾难。

要不要做同意横幅?

这个埋点不写 Cookie、不设标识符、不采集个人信息,只发一个「+1」。多数司法辖区下这类聚合计数不属于追踪。但这是工程判断,不是法律意见;面向欧盟用户商用前请自己确认。

为什么不直接用 Google Analytics?

如果你的问题只是「有没有人打开过」,GA 的成本(账号、同意横幅、数据延迟、报表学习)大于它给你的信息量。等第 1 列不再是 0 了,再上 GA 才有意义。

这个计数能证明什么?

只能证明加载发生过。它不能证明有人读了、记住了、想买。别用它给自己发奖状。

一句话:在把「没人买」归因到产品之前,先证明「有人看过」。这一页只做这一步,也只声称这一步。

← 回到全部免费工具 · 本页零账号、零后端、零 Cookie。数据只在你的浏览器和你自己的命名空间里。