这是重构集体网站的后期筹备之一。用于统计每个页面和整个站点的访问量。后续如果评论零碎有不错的抉择的话另说,不然也可能会再退出评论零碎的相干内容整合在一起。
该我的项目技术栈:
- Typescript
- Cloudflare Wrangler
- Worktop (封装 Worker 的罕用办法和反对 Router)
- Webpack
目前只有 Serverless 的实现,还没有 SDK,但能够封装 fetch 之类的调用,也非常简单。后续看是否须要,如果关注的人多起来,我也会多封装一些 SDK、工具脚手架之类的。
应用阐明
第一步,Fork 本我的项目,并 Clone 至本地。
- 源码: https://github.com/willin/clo...
- 镜像: https://gitee.com/willin/clou...
第二步,配置环境
# 装置命令行npm install -g @cloudflare/wrangler# 登录 Cloudflarewrangler login# 创立 KV 存储桶wrangler kv:namespace create "views" --env production
关上 wrangler.toml
,批改以下配置:
- account_id
- zone_id
- route
- kv_namespaces 中的 id
通过 Github Actions 主动部署,或者手动执行 wrangler publish --env production
。
须要在仓库设置中,配置 Secrets。名称为: CF_API_TOKEN
,传入 Cloudflare 的 API Token。
API Token 生成拜访: https://dash.cloudflare.com/p... ,抉择应用模板 Edit Cloudflare Workers
创立即可。
配置胜利后须要给 DNS 中增加一条 A 解析,设置为: 192.0.2.1
并通过 CDN 减速。
API
PUT /pv?slug=optional
QueryString 参数:
slug
: string 可选
如果不传,或传入 total
,则返回为总计点击量。
{ "result": { "slug": "total", "pv": 10 }}
P.S. 其中,GET 申请也能够拜访,但仅当 PUT 申请时,会额定将拜访计数累加。
GET /list?slugs=optional,optional
QueryString 参数:
slugs
: string 可选,请将 string[] 用,
分隔
如果不传,则返回为总计点击量。
{ "result": [ { "slug": "total", "pv": 10 }, // ... ]}
LICENSE
Apache License 2.0