这是重构集体网站的后期筹备之一。用于统计每个页面和整个站点的访问量。后续如果评论零碎有不错的抉择的话另说,不然也可能会再退出评论零碎的相干内容整合在一起。

该我的项目技术栈:

  • 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