惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
小众软件
小众软件
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
H
Help Net Security
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
腾讯CDC

新锐博客

vscode连接cnb并推送仓库 - 新锐博客 基于Astro构建的支持对话与生图的Web应用 - 新锐博客 deepseek-v4-flash-0731使用体验 - 新锐博客 基元律动免费送68元额度 - 新锐博客 Linux更换软件源 - 新锐博客 华为鸿蒙7.0花粉beta版发布 - 新锐博客 使用测速脚本测一下服务器带宽 - 新锐博客 trae告别白嫖时代,auto也需排队了 - 新锐博客 流量不够用?大流量卡免费领 - 新锐博客 推荐一个免费在线图片处理网站 - 新锐博客 AI清理C盘的优缺点 - 新锐博客 twikoo不算bug的bug - 新锐博客 最近网站的一些变动 - 新锐博客 腾讯EO开始发多余套餐啦!速领 - 新锐博客 hi168停止对个人用户的运营 - 新锐博客 哪吒监控曝高危漏洞,请尽快升级 - 新锐博客 IndexDB实现大文件下载的思路 - 新锐博客 鱼鱼api使用教程 - 新锐博客 服务器安装Dokploy替代vercel - 新锐博客 对于近几年的电视剧的无力吐槽 - 新锐博客 关于网站被攻击的后续 - 新锐博客 使用sessionStorage给音乐播放进度存储 - 新锐博客 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 AI模型掺水?如何辨别真假? - 新锐博客 感谢一九云给我防住了攻击 - 新锐博客 对一些新手使用AI编程的建议 - 新锐博客 Edgeone标记过期和直接删除有何区别? - 新锐博客 用Navigation Timing API给博客添加上加载时间 - 新锐博客 使用 Astro 自建博客,从零开始鏖战 14 小时 - 新锐博客 网站收录急剧下降,趁此机会迁移站点 - 新锐博客
twikoo不用token查询文章浏览量 - 新锐博客
莫忘 · 2026-08-12 · via 新锐博客

前言

twikoo 不知道哪个版本更新后,就有了记录文章访问量的功能。

虽然可能不准确,但是聊胜于无。

twikoo的云函数提供了 COUNTER_GET 事件,可以按文章路径查询浏览量。它只是一个只读查询,并不校验管理员身份,所以不需要 accessToken 就能拿到数据。下面是我在博客里的实现。

教程

1. 页面结构

在文章页放一个带 data- 属性的容器,用来标记要显示浏览量的位置:

<span class="post-views"
      data-path="/post/100.html"
      data-title="文章标题"
      data-env-id="https://你的twikoo服务地址">
  <span class="views-count">加载中...</span>
</span>
  • data-path:文章的唯一路径,浏览量就是按它统计的
  • data-title:文章标题(可选)
  • data-env-id:你的 twikoo 服务地址,也就是请求要发往的地址

2. 请求代码

页面加载后用 fetch 向 twikoo 服务发送 COUNTER_GET 请求:

(function() {
  const viewsEl = document.querySelector('.post-views');
  if (!viewsEl) return;

  const path = viewsEl.dataset.path;
  const envId = viewsEl.dataset.envId;
  const title = viewsEl.dataset.title;
  if (!path || !envId) return;

  fetch(envId, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      event: 'COUNTER_GET',
      url: path,
      href: window.location.href,
      title: title || document.title
    })
  })
    .then(function(res) { return res.json(); })
    .then(function(data) {
      const count = data?.time || 0;
      viewsEl.querySelector('.views-count').textContent = count + ' 次浏览';
    })
    .catch(function() {
      viewsEl.querySelector('.views-count').textContent = '-';
    });
})();

请求体里不需要accessToken字段,服务端会直接返回该路径的浏览量,保存在返回数据的 time 字段中。

3. 注意事项

  • 浏览量数据来自twikoo的 counter 集合,只有当页面上的twikoo评论组件初始化过,访问量才会被记录。所以新文章在有人访问之前,查询结果是0。
  • 如果请求失败,这里做了兜底显示 -,不会影响页面其他功能。

结语

COUNTER_GET 事件查询浏览量,代码量不大,也不需要暴露管理员的token,适合想在静态博客里展示文章访问量的场景。

莫忘

君子喻于义,小人喻于利

本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 新锐博客