Blog 阅读数添加

背景

发现 blog 还没阅读数,最早是用不蒜子做的,后来迁移了几次就没再用了,这次做一个更新。

方案

看了下 config 中的配置,目前是支持 leancloud,firestore(firebase),busuanzi 这三种,其他的方式应该都需要改源码了。

  • leancloud 本身有些请求次数和大小之类的限制,
  • busuanzi 这边算是比较老牌了,之前用过,体验还不错,
  • firestore 是 firebase 提供的一个 NoSQL 服务

正好前面把网站分析之类的都放到了 Google,所以这个就自然而然的选择了 firestore。

Firestore

Firestore 是 Firebase 提供的一个 NoSQL 数据库,关键是免费额度和次数都还可以,免费额度如下,这种额度做一个自用app或者很小规模的 App 都够用了。

免费层级 配额
数据存储 1 GiB
文档读取 每天 50000 次
文档写入 每天 20000 次
文档删除 每天 20000 次
网络出站流量 每月 10 GiB

利用这个特点可以用这个数据库来存储每篇文章的阅读数。

配置

打开 Firebase 新建一个应用:

image_1

添加完应用后找到应用设置,找到对应的 projectId 和 apiKey
image_2

填入 _config.next.yml
image_3

然后根据提示创建一个 Firestore
image_4

讲修改规则调整为如下,这里的 articles 就是刚才在 _config.next.yml 中配置的 collection 的值,如果想改的话需要同步更改

1
2
3
4
5
6
7
8
9
10
11
12
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /articles/{document=**} {
allow read, create: if true;
allow write: if request.resource.data.count==resource.data.count+1;
}
match /{document=**} {
allow read, write: if false;
}
}
}

这是可以试着访问下自己的页面,看看这里有没有出现对应的 collection,如果没有的话就自己手动建一个:
image_5

总结

整体也比较简单,参考了一些大神的 blog 和 nosql 语句。

Reference:
Hexo NexT 主題的閱讀次數統計
Hexo優化:新增圖片圖床、更換文章閱讀計數器服務
Google - Cloud Firestore 數據的寫入讀取
Hexo × NexT × Firestore 顯示瀏覽人次