
部署Umami展示API,为博客提供PV数据
引子
在我之前的文章中,分享了使用Umami作为访客统计工具的经历。
今天有小伙伴问我,部署了本站的开源Zola主题并配置 Umami 访客统计后,如何实现和本站关于页面的一样的 PV 展示效果,如下图所示。


关于PV数据的获取,我参考了张洪大佬的Umami 文章,里面分享了一个 PHP 文件用于获取 Umami 的数据并进行公开展示。
在我移植张洪大佬博客主题过程中,并没有沿用 PHP 代码,因为我希望实现一种同时支持函数服务和本地部署的方法,这样可以根据实际需要灵活切换,避免被云服务商或云函数服务商锁定。
为此,我移植了 JS 版本,能够在 CloudFlare Workers 平台运行,并且支持通过 Docker 容器私有化部署在云服务器或本地,算是一劳永逸地解决了这个问题。
这项工作在博客上线时已经完成了,只不过忘了发布。正好借着这次的契机,将项目发布出来。
Umami Status Public API
Umami Status Public API 是一个基于 Cloudflare Worker 的 Umami 网站统计数据公共 API 服务,提供网站访问统计数据的 RESTful API 接口。支持私有化部署、数据缓存等。
项目名称:Umami Status Public API
项目地址:https://github.com/iWangJiaxiang/umami-status-public-api
服务部署
关于 CloudFlare Workers 和 Docker 私有化部署的步骤我放在项目 Readme 里了,有需要的小伙伴自行查阅吧~真的非常简单。
与本站博客主题集成
完成部署后,你会具备一个可以访问 API 服务的域名或者地址。
如果你使用的是本站开源的Zola主题,那么只需要在 config.toml
文件中,将下列配置中的 stat_api
替换成你的地址即可。
# 是否启用页面统计
[extra.site.analytics]
# 关于页面展示访问量
stat_api = "https://stat-api-url"
PS:如果你使用其他的方式提供 PV 数据,只要你的数据格式符合以下的 JSON 结构,都可以替换 stat_api
配置的。
{
"today_uv": 123, // 今日独立访客数
"today_pv": 456, // 今日页面浏览量
"yesterday_uv": 98, // 昨日独立访客数
"yesterday_pv": 234, // 昨日页面浏览量
"last_month_pv": 12345, // 近30天页面浏览量
"last_year_pv": 123456 // 近一年页面浏览量
}
我踩过的坑
配置完成后博客没有显示 PV 数据
这类问题是跨域导致的浏览器禁用,如果你采用私有化部署的方式,很可能会遇到这类问题。
你可以按 F12 打开浏览器控制台,查看是否有 CORS 相关的报错。
如果是跨域的问题,你需要调整 API 服务反向代理的配置,具体的步骤请咨询 AI。
总结
正如前文所述,通过 Umami Status Public API 项目获取 PV 数据是一个相对灵活的方式,无论是使用 CloudFlare Workers 还是自己搭建服务,都能在一套代码下实现。
项目已经运行了大半年,目前进入维护阶段。如果大家有更好的建议或遇到问题,欢迎在评论区或者项目 ISSUE 中提出~