动手实现不蒜子
不蒜子 是一个网页计数器, 对于喜欢写博客的朋友来说, 能有一种统计阅读量的方式会很不错。
当然这种功能在更复杂的产品上会有更好玩的应用, 比如统计B站视频的播放量等信息。
我们先从最简单的部分开始, 试着自己实现一下不蒜子的功能。
部署
如果你只是想要快速用好不蒜子的产品功能, 推荐读者阅读 自建 不蒜子 API 这篇博客。
作者甚至帮大家做了该应用在 Replit 上一键部署的示范, 非常好用。
原理
不蒜子根据发起请求的源网页进行计数, 如图 (应该有一个软件工程的那种图, 画出来网络请求中 client, server 各自的反应)。
1 | sequenceDiagram |
前端
- 发送当前页面的路径给后端
- 展示查询到的显示次数
如下是对代码功能进行的注释
1 | var bszCaller, bszTag; |
后端
后端其实不是主要的难点, 用最基本的键值存储, 把一些页面信息存下来就足够了。
- 存储不同路径的显示次数
- 查询并反馈
反向代理
不蒜子的前端插件要保证在 github pages 这样 https 协议的博客上有用, 就需要我们的后端服务部署在一个有 SSL 证书的服务器上。
进一步的, 我们用反向代理进行路由转发 {DOMAIN}/busianzi
而不是直接使用裸露的端口号 {DOMAIN}:4096
。
1 | # nginx config |
这可以说是部署步骤的一个延申。